• Austin Clements's avatar
    runtime: generalize GC trigger · 29be3f19
    Austin Clements authored
    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: default avatarRick Hudson <rlh@golang.org>
    29be3f19
malloc.go 30.8 KB