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.
- Prepare
Collector - The collector GC Preparation Work
- Prepare
Mutator - 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.
- Release
Collector - The collector release Work
- Release
Mutator - The mutator release Work
- Scan
Mutator Roots - ScanVM
Specific Roots - Schedule
Collection - Stop
Mutators - Stop all mutators