mirror of https://github.com/golang/go.git
runtime: correctly account for allocated objects in allocfree trace
The current implementation doesn't handle s.freeindex at all, which means it'll skip a whole bunch of recently-made allocations, because the span may have not been swept yet. Change-Id: I8c5e360f5927ffe7e9abb448b352a59875e31b02 Reviewed-on: https://go-review.googlesource.com/c/go/+/586996 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Michael Knyszek <mknyszek@google.com> Reviewed-by: Michael Pratt <mpratt@google.com>
This commit is contained in:
parent
5ab8f90745
commit
197101a84a
|
|
@ -45,11 +45,10 @@ func traceSnapshotMemory() {
|
|||
// Find all allocated objects.
|
||||
abits := s.allocBitsForIndex(0)
|
||||
for i := uintptr(0); i < uintptr(s.nelems); i++ {
|
||||
if !abits.isMarked() {
|
||||
continue
|
||||
if abits.index < uintptr(s.freeindex) || abits.isMarked() {
|
||||
x := s.base() + i*s.elemsize
|
||||
trace.HeapObjectExists(x, s.typePointersOfUnchecked(x).typ)
|
||||
}
|
||||
x := s.base() + i*s.elemsize
|
||||
trace.HeapObjectExists(x, s.typePointersOfUnchecked(x).typ)
|
||||
abits.advance()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue