runtime: minor clarifications of markroot This puts the _Root* indexes in a more friendly order and tweaks markrootSpans to use a for-range loop instead of its own indexing. Change-Id: I2c18d55c9a673ea396b6424d51ef4997a1a74825 Reviewed-on: https://go-review.googlesource.com/14548 Reviewed-by: Rick Hudson <rlh@golang.org>
diff --git a/src/runtime/mgc.go b/src/runtime/mgc.go index 7fdd93b..848e8f6 100644 --- a/src/runtime/mgc.go +++ b/src/runtime/mgc.go
@@ -126,13 +126,14 @@ _DebugGC = 0 _ConcurrentSweep = true _FinBlockSize = 4 * 1024 + _RootData = 0 _RootBss = 1 _RootFinalizers = 2 - _RootSpans0 = 3 + _RootFlushCaches = 3 + _RootSpans0 = 4 _RootSpansShards = 128 - _RootFlushCaches = _RootSpans0 + _RootSpansShards - _RootCount = _RootFlushCaches + 1 + _RootCount = _RootSpans0 + _RootSpansShards // sweepMinHeapDistance is a lower bound on the heap distance // (in bytes) reserved for concurrent sweeping between GC
diff --git a/src/runtime/mgcmark.go b/src/runtime/mgcmark.go index 128a163..c8f8a66 100644 --- a/src/runtime/mgcmark.go +++ b/src/runtime/mgcmark.go
@@ -121,8 +121,7 @@ sg := mheap_.sweepgen startSpan := shard * len(work.spans) / _RootSpansShards endSpan := (shard + 1) * len(work.spans) / _RootSpansShards - for spanidx := startSpan; spanidx < endSpan; spanidx++ { - s := work.spans[spanidx] + for _, s := range work.spans[startSpan:endSpan] { if s.state != mSpanInUse { continue }