From: Austin Clements Date: Mon, 14 Mar 2016 17:51:23 +0000 (-0400) Subject: runtime: perform gcMarkRootCheck during STW in checkmark mode X-Git-Tag: go1.7beta1~1290 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d7cedc4b74f902a3a1b429fb27f85380f6955a6f;p=gostls13.git runtime: perform gcMarkRootCheck during STW in checkmark mode gcMarkRootCheck is too expensive to do during mark termination. However, since it's a useful check and it complements checkmark mode nicely, enable it during mark termination is checkmark is enabled. Change-Id: Icd9039e85e6e9d22747454441b50f1cdd1412202 Reviewed-on: https://go-review.googlesource.com/20663 Reviewed-by: Rick Hudson Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot --- diff --git a/src/runtime/mgc.go b/src/runtime/mgc.go index 41c53c3c13..2b1e56a5f0 100644 --- a/src/runtime/mgc.go +++ b/src/runtime/mgc.go @@ -1554,8 +1554,11 @@ func gcMark(start_time int64) { gcDrain(gcw, gcDrainBlock) gcw.dispose() - // TODO: Re-enable once this is cheap. - //gcMarkRootCheck() + if debug.gccheckmark > 0 { + // This is expensive when there's a large number of + // Gs, so only do it if checkmark is also enabled. + gcMarkRootCheck() + } if work.full != 0 { throw("work.full != 0") }