From: Austin Clements Date: Wed, 25 Feb 2015 03:29:33 +0000 (-0500) Subject: runtime: simplify gcResetGState X-Git-Tag: go1.5beta1~1885 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=07b73ce146f7958c6e9e9b8778690971ac160cd8;p=gostls13.git runtime: simplify gcResetGState Since allglock is held in this function, there's no point to tip-toeing around allgs. Just use a for-range loop. Change-Id: I1ee61c7e8cac8b8ebc8107c0c22f739db5db9840 Reviewed-on: https://go-review.googlesource.com/5882 Reviewed-by: Russ Cox Reviewed-by: Rick Hudson --- diff --git a/src/runtime/mgc.go b/src/runtime/mgc.go index e87d80618a..830bf879d4 100644 --- a/src/runtime/mgc.go +++ b/src/runtime/mgc.go @@ -600,18 +600,17 @@ func gcCopySpans() { // gcResetGState resets the GC state of all G's and returns the length // of allgs. -func gcResetGState() int { +func gcResetGState() (numgs int) { // This may be called during a concurrent phase, so make sure // allgs doesn't change. lock(&allglock) - local_allglen := allglen - for i := uintptr(0); i < local_allglen; i++ { - gp := allgs[i] + for _, gp := range allgs { gp.gcworkdone = false // set to true in gcphasework gp.gcscanvalid = false // stack has not been scanned } + numgs = len(allgs) unlock(&allglock) - return int(local_allglen) + return } // Hooks for other packages