Skip to content

Latest commit

 

History

History
68 lines (54 loc) · 1.64 KB

b9.org

File metadata and controls

68 lines (54 loc) · 1.64 KB

Road Map

OMR Cleanup

Minor Tasks

Force set the glue component names

Port visitor scheme to OMR Marking

Remove OMR’s object iterator code

Single transitionSet opimization

  • More than just an opti
  • Delay allocating the transition table potentially means less rooting during object map allocation

Version 1: Basic object features

Transition Tables

Fixed / Dynamic Slots

Split high-level public api from low-level

Write barriers

Finalization

  • List of objects and finalizers
  • Finalization calls are dispatched to threads

Expose OMR thread dispatch library to language

  • Possibly expose OMR work-sharing API so languages can work out their own multithreadedness in Finalization
  • Reuse the GC’s work dispatcher for finalization

Version 2: Java-style classes

Typed, variable width slots

Fat Object Maps

  • Merge SlotMap, ObjectMap, EmptyObjectMap to one type.

Version 3: Jit

Jit Integration

Version 4: Arrays

Array Objects

Version 5: Threading and atomics

Atomic sets/gets

Object Locks

Shared heap lock

Version 6

Constructors and construction sites

Slack Tracking

Root Constructors

Version 7: Dictionary Objects

Dictionary Objects

Problems

Rooting

Rooting through Value-slots

Rooting a prexisting pointer sloti

“`

for (const Map& map : object->mapHierachy()) { for (const SlotLookup& slot : map->slotRange()) { switch(slot.desc.type().coreType()) { case CoreType::REF: edge.mark() case CoreType::VALUE: return handleValue(); } object->access(slot);

} }