Module gc_work

Module gc_work 

Source

Structsยง

Prepare
The global GC Preparation Work This work packet invokes prepare() for the plan (which will invoke prepare() for each space), and pushes work packets for preparing mutators and collectors. We should only have one such work packet per GC, before any actual GC work starts. We assume this work packet is the only running work packet that accesses plan, and there should be no other concurrent work packet that accesses plan (read or write). Otherwise, there may be a race condition.
PrepareCollector
The collector GC Preparation Work
PrepareMutator
The mutator GC Preparation Work
Release
The global GC release Work This work packet invokes release() for the plan (which will invoke release() for each space), and pushes work packets for releasing mutators and collectors. We should only have one such work packet per GC, after all actual GC work ends. We assume this work packet is the only running work packet that accesses plan, and there should be no other concurrent work packet that accesses plan (read or write). Otherwise, there may be a race condition.
ReleaseCollector
The collector release Work
ReleaseMutator
The mutator release Work
ScanMutatorRoots
ScanVMSpecificRoots
ScheduleCollection
StopMutators
Stop all mutators