]> Cypherpunks repositories - gostls13.git/commit
runtime: changes to g->atomicstatus (nee status) to support concurrent GC
authorRick Hudson <rlh@golang.org>
Wed, 27 Aug 2014 15:15:47 +0000 (11:15 -0400)
committerRick Hudson <rlh@golang.org>
Wed, 27 Aug 2014 15:15:47 +0000 (11:15 -0400)
commit0a7c7ac80e7c4ccd2b04b6b65100794adbd72ba5
tree62e6c41d1d8bb15c2f22301aeb3e45000dae0855
parent56f8b297c724e43971b2b35e72bd8be9d5c0ea44
runtime: changes to g->atomicstatus (nee status) to support concurrent GC

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
src/pkg/runtime/heapdump.c
src/pkg/runtime/mgc0.c
src/pkg/runtime/mprof.goc
src/pkg/runtime/panic.c
src/pkg/runtime/proc.c
src/pkg/runtime/proc.go
src/pkg/runtime/runtime.h
src/pkg/runtime/stack.c
src/pkg/runtime/traceback_arm.c
src/pkg/runtime/traceback_x86.c