mirror of https://github.com/golang/go.git
runtime: make work.bytesMarked 8-byte aligned
Make atomic access on 32-bit architectures happy. Updates #17786. Change-Id: I42de63ff1381af42124dc51befc887160f71797d Reviewed-on: https://go-review.googlesource.com/33235 Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
parent
ccd69d0582
commit
bbe96f5673
|
|
@ -781,6 +781,22 @@ var work struct {
|
|||
empty uint64 // lock-free list of empty blocks workbuf
|
||||
pad0 [sys.CacheLineSize]uint8 // prevents false-sharing between full/empty and nproc/nwait
|
||||
|
||||
// bytesMarked is the number of bytes marked this cycle. This
|
||||
// includes bytes blackened in scanned objects, noscan objects
|
||||
// that go straight to black, and permagrey objects scanned by
|
||||
// markroot during the concurrent scan phase. This is updated
|
||||
// atomically during the cycle. Updates may be batched
|
||||
// arbitrarily, since the value is only read at the end of the
|
||||
// cycle.
|
||||
//
|
||||
// Because of benign races during marking, this number may not
|
||||
// be the exact number of marked bytes, but it should be very
|
||||
// close.
|
||||
//
|
||||
// Put this field here because it needs 64-bit atomic access
|
||||
// (and thus 8-byte alignment even on 32-bit architectures).
|
||||
bytesMarked uint64
|
||||
|
||||
markrootNext uint32 // next markroot job
|
||||
markrootJobs uint32 // number of markroot jobs
|
||||
|
||||
|
|
@ -842,19 +858,6 @@ var work struct {
|
|||
// program started if debug.gctrace > 0.
|
||||
totaltime int64
|
||||
|
||||
// bytesMarked is the number of bytes marked this cycle. This
|
||||
// includes bytes blackened in scanned objects, noscan objects
|
||||
// that go straight to black, and permagrey objects scanned by
|
||||
// markroot during the concurrent scan phase. This is updated
|
||||
// atomically during the cycle. Updates may be batched
|
||||
// arbitrarily, since the value is only read at the end of the
|
||||
// cycle.
|
||||
//
|
||||
// Because of benign races during marking, this number may not
|
||||
// be the exact number of marked bytes, but it should be very
|
||||
// close.
|
||||
bytesMarked uint64
|
||||
|
||||
// initialHeapLive is the value of memstats.heap_live at the
|
||||
// beginning of this GC cycle.
|
||||
initialHeapLive uint64
|
||||
|
|
|
|||
Loading…
Reference in New Issue