aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2018-08-13 16:14:19 -0400
committerAustin Clements <austin@google.com>2018-10-02 20:35:24 +0000
commit918ed88e475d39e40baf9cd6539b618e05d12e5e (patch)
tree990091f79382f94e7e939e31c9ef7d487f22b36d /src/runtime
parente25ef35254cc4372256d0c7f4521df3cf3d092bf (diff)
downloadgo-918ed88e475d39e40baf9cd6539b618e05d12e5e.tar.xz
runtime: remove gcStart's mode argument
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>
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/malloc.go2
-rw-r--r--src/runtime/mgc.go21
-rw-r--r--src/runtime/proc.go2
3 files changed, 12 insertions, 13 deletions
diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go
index 5755c9e263..c3fe1169dc 100644
--- a/src/runtime/malloc.go
+++ b/src/runtime/malloc.go
@@ -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)
}
}
diff --git a/src/runtime/mgc.go b/src/runtime/mgc.go
index 83d9a49a46..25bb210475 100644
--- a/src/runtime/mgc.go
+++ b/src/runtime/mgc.go
@@ -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
diff --git a/src/runtime/proc.go b/src/runtime/proc.go
index 73b4a1d9d6..ec73b4d918 100644
--- a/src/runtime/proc.go
+++ b/src/runtime/proc.go
@@ -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()})
}
}