]> Cypherpunks repositories - gostls13.git/commit
runtime: generalize GC trigger
authorAustin Clements <austin@google.com>
Mon, 9 Jan 2017 16:35:42 +0000 (11:35 -0500)
committerAustin Clements <austin@google.com>
Fri, 31 Mar 2017 01:15:06 +0000 (01:15 +0000)
commit29be3f1999d1ccf01110f4e1f2d628f54f6c65da
tree3a1f4561bda7cbcc5133242a70c3482cc25d68c2
parent640cd3b3220f7a06820365e53f8fc6cb0acd1b20
runtime: generalize GC trigger

Currently the GC triggering condition is an awkward combination of the
gcMode (whether or not it's gcBackgroundMode) and a boolean
"forceTrigger" flag.

Replace this with a new gcTrigger type that represents the range of
transition predicates we need. This has several advantages:

1. We can remove the awkward logic that affects the trigger behavior
   based on the gcMode. Now gcMode purely controls whether to run a
   STW GC or not and the gcTrigger controls whether this is a forced
   GC that cannot be consolidated with other GC cycles.

2. We can lift the time-based triggering logic in sysmon to just
   another type of GC trigger and move the logic to the trigger test.

3. This sets us up to have a cycle count-based trigger, which we'll
   use to make runtime.GC trigger concurrent GC with the desired
   consolidation properties.

For #18216.

Change-Id: If9cd49349579a548800f5022ae47b8128004bbfc
Reviewed-on: https://go-review.googlesource.com/37516
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/mheap.go
src/runtime/proc.go