• Rick Hudson's avatar
    runtime: changes to g->atomicstatus (nee status) to support concurrent GC · 0a7c7ac8
    Rick Hudson authored
    Every change to g->atomicstatus is now done atomically so that we can
    ensure that all gs pass through a gc safepoint on demand. This allows
    the GC to move from one phase to the next safely. In some phases the
    stack will be scanned. This CL only deals with the infrastructure that
    allows g->atomicstatus to go from one state to another. Future CLs
    will deal with scanning and monitoring what phase the GC is in.
    
    The major change was to moving to using a Gscan bit to indicate that
    the status is in a scan state. The only bug fix was in oldstack where
    I wasn't moving to a Gcopystack state in order to block scanning until
    the new stack was in place. The proc.go file is waiting for an atomic
    load instruction.
    
    LGTM=rsc
    R=golang-codereviews, dvyukov, josharian, rsc
    CC=golang-codereviews, khr
    https://golang.org/cl/132960044
    0a7c7ac8
traceback_x86.c 14.3 KB