Skip to content

Roadmap: Support StickyImmix #57

@wks

Description

@wks

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.
  • WB-unprotected objects
    • Registering
    • Scanning
    • Checking if an object is WB-unprotected
    • Unregistering Should'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 of obj_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.
    • Allocate Hash buffers in the GC heap, removing Hash from the set of obj_free candidates.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions