1
0
mirror of https://github.com/golang/go synced 2024-10-01 11:18:32 -06:00

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 <rsc@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
This commit is contained in:
Austin Clements 2015-02-24 22:29:33 -05:00
parent b3d791c7bb
commit 07b73ce146

View File

@ -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