Open
Description
This issue tracks the progress of supporting StickyImmix, a generational collector.
- Write barrier
- Routing RB_OBJ_WRITE and RB_OBJ_WRITTEN to MMTk barrier implementation
- Map
rb_gc_writebarrier_remember
so that MMTk remembers the object - bulk array access
- Use
rb_gc_writebarrier_remember
to remember parent array. - Change to region barrier if possible.
- Use
- WB-unprotected objects
- Registering
- Scanning
- Checking if an object is WB-unprotected
-
UnregisteringShould't be possible. If an object becomes WB-unprotected, it remains so for the rest of its life
- Testing
- Tests pass with object movement disabled
- Tests pass with object movement enabled
- Test with Liquid benchmark
- Optimising
-
fstring_table
: During nursery collection, only update entries added since the last GC.- Other global weak tables can be optimised similarly if needed.
- Write barrier fast paths: Implement the write barrier fast path as C function that can be inlined at call sites, and eliminate the call into mmtk-core.
- Load balance: Further parallelise weak table processing
T_DATA
is the majority ofobj_free
candidates.- Embedded data with default free function are not
obj_free
candidates. - If we can't free things in parallel, resurrect the idea of zombies and resurrect objects for
obj_free
.
- Embedded data with default free function are not
- Allocate
Hash
buffers in the GC heap, removingHash
from the set ofobj_free
candidates.
-
Metadata
Metadata
Assignees
Labels
No labels