]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: combine gcResetGState and gcResetMarkState
authorAustin Clements <austin@google.com>
Sun, 18 Oct 2015 03:57:53 +0000 (23:57 -0400)
committerAustin Clements <austin@google.com>
Mon, 19 Oct 2015 18:38:07 +0000 (18:38 +0000)
These functions are always called together and perform logically
related state resets, so combine them in to just gcResetMarkState.

Fixes #11427.

Change-Id: I06c17ef65f66186494887a767b3993126955b5fe
Reviewed-on: https://go-review.googlesource.com/16041
Reviewed-by: Rick Hudson <rlh@golang.org>
src/runtime/mgc.go

index f3a95ba113c9c107a7ab56783d4a2d9078ca2d21..54c92a9db210ea318e9990bbd79076f14859b4dc 100644 (file)
@@ -987,7 +987,6 @@ func gc(mode gcMode) {
        // reclaimed until the next GC cycle.
        clearpools()
 
-       gcResetGState()
        gcResetMarkState()
 
        work.finalizersDone = false
@@ -1150,7 +1149,6 @@ func gc(mode gcMode) {
                        // Run a full stop-the-world mark using checkmark bits,
                        // to check that we didn't forget to mark anything during
                        // the concurrent mark process.
-                       gcResetGState() // Rescan stacks
                        gcResetMarkState()
                        initCheckmarks()
                        gcMark(startTime)
@@ -1166,7 +1164,6 @@ func gc(mode gcMode) {
                        // The g stacks have been scanned so
                        // they have gcscanvalid==true and gcworkdone==true.
                        // Reset these so that all stacks will be rescanned.
-                       gcResetGState()
                        gcResetMarkState()
                        finishsweep_m(true)
 
@@ -1649,9 +1646,10 @@ func gcCopySpans() {
        unlock(&mheap_.lock)
 }
 
-// gcResetGState resets the GC state of all G's. Any Gs created after
-// this will also be in this reset state.
-func gcResetGState() {
+// gcResetMarkState resets global state prior to marking (concurrent
+// or STW) and resets the stack scan state of all Gs. Any Gs created
+// after this will also be in the reset state.
+func gcResetMarkState() {
        // This may be called during a concurrent phase, so make sure
        // allgs doesn't change.
        lock(&allglock)
@@ -1661,12 +1659,7 @@ func gcResetGState() {
                gp.gcAssistBytes = 0
        }
        unlock(&allglock)
-}
 
-// gcResetMarkState resets state prior to marking (concurrent or STW).
-//
-// TODO(austin): Merge with gcResetGState. See issue #11427.
-func gcResetMarkState() {
        work.bytesMarked = 0
        work.initialHeapLive = memstats.heap_live
 }