]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: remove gcStart's mode argument
authorAustin Clements <austin@google.com>
Mon, 13 Aug 2018 20:14:19 +0000 (16:14 -0400)
committerAustin Clements <austin@google.com>
Tue, 2 Oct 2018 20:35:24 +0000 (20:35 +0000)
This argument is always gcBackgroundMode since only
debug.gcstoptheworld can trigger a STW GC at this point. Remove the
unnecessary argument.

Updates #26903. This is preparation for unifying STW GC and concurrent
GC.

Change-Id: Icb4ba8f10f80c2b69cf51a21e04fa2c761b71c94
Reviewed-on: https://go-review.googlesource.com/c/134775
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
src/runtime/malloc.go
src/runtime/mgc.go
src/runtime/proc.go

index 5755c9e263585b03934da3ca6877a987af25e78a..c3fe1169dc8ffbd25417f6b052938ea18ab240f4 100644 (file)
@@ -992,7 +992,7 @@ func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer {
 
        if shouldhelpgc {
                if t := (gcTrigger{kind: gcTriggerHeap}); t.test() {
-                       gcStart(gcBackgroundMode, t)
+                       gcStart(t)
                }
        }
 
index 83d9a49a464241550392b1b4b7230cf7aa4a0d56..25bb2104757eb62d51d55402746599262a08e024 100644 (file)
@@ -1063,7 +1063,7 @@ func GC() {
        // We're now in sweep N or later. Trigger GC cycle N+1, which
        // will first finish sweep N if necessary and then enter sweep
        // termination N+1.
-       gcStart(gcBackgroundMode, gcTrigger{kind: gcTriggerCycle, n: n + 1})
+       gcStart(gcTrigger{kind: gcTriggerCycle, n: n + 1})
 
        // Wait for mark termination N+1 to complete.
        gcWaitOnMark(n + 1)
@@ -1201,13 +1201,13 @@ func (t gcTrigger) test() bool {
        return true
 }
 
-// gcStart transitions the GC from _GCoff to _GCmark (if
-// !mode.stwMark) or _GCmarktermination (if mode.stwMark) by
-// performing sweep termination and GC initialization.
+// gcStart starts the GC. It transitions from _GCoff to _GCmark (if
+// debug.gcstoptheworld == 0) or performs all of GC (if
+// debug.gcstoptheworld != 0).
 //
 // This may return without performing this transition in some cases,
 // such as when called on a system stack or with locks held.
-func gcStart(mode gcMode, trigger gcTrigger) {
+func gcStart(trigger gcTrigger) {
        // Since this is called from malloc and malloc is called in
        // the guts of a number of libraries that might be holding
        // locks, don't attempt to start GC in non-preemptible or
@@ -1250,12 +1250,11 @@ func gcStart(mode gcMode, trigger gcTrigger) {
        // We do this after re-checking the transition condition so
        // that multiple goroutines that detect the heap trigger don't
        // start multiple STW GCs.
-       if mode == gcBackgroundMode {
-               if debug.gcstoptheworld == 1 {
-                       mode = gcForceMode
-               } else if debug.gcstoptheworld == 2 {
-                       mode = gcForceBlockMode
-               }
+       mode := gcBackgroundMode
+       if debug.gcstoptheworld == 1 {
+               mode = gcForceMode
+       } else if debug.gcstoptheworld == 2 {
+               mode = gcForceBlockMode
        }
 
        // Ok, we're doing it! Stop everybody else
index 73b4a1d9d62aabd7d7d4ff68ad37b11f4d08f051..ec73b4d918cae87bf2892515369dd07b18aaec4e 100644 (file)
@@ -254,7 +254,7 @@ func forcegchelper() {
                        println("GC forced")
                }
                // Time-triggered, fully concurrent.
-               gcStart(gcBackgroundMode, gcTrigger{kind: gcTriggerTime, now: nanotime()})
+               gcStart(gcTrigger{kind: gcTriggerTime, now: nanotime()})
        }
 }