MMTk 0.14.0
Pre-release
Pre-release
API
ProcessEdgesWorkis no longer exposed in theScanningtrait. Instead,RootsWorkFactoryis introduced
for the bindings to create more work packets.Collection::stop_all_mutators()now provides a callbackmutator_visitor. The implementation is required
to callmutator_visitorfor each mutator once it is stopped. This requirement was implicit prior to this change.- Now MMTk creation is done in the builder pattern:
MMTKBuilderis introduced. Command line argument processing API (process()andprocess_bulk()) now
takes&MMTKBuilderas an argument instead of&MMTK.gc_init()is renamed tommtk_init().mmtk_init()now takes&MMTKBuilderas an argument,
and returns an MMTk instanceBox<MMTK>.heap_size(which used to be an argument forgc_init()) is now an MMTk option.- All the options now can be set through the command line argument processing API.
- Node enqueuing is supported:
- Add
Scanning::support_edge_enqueuing(). A binding may returnfalseif they cannot do edge scanning for certain objects. - For objects that cannot be enqueued as edges,
Scanning::scan_object_and_trace_edges()will be called.
- Add
Scheduler
- Fixed a bug that may cause deadlock when GC workers are parked and the coordinator is still executing work.
Misc
Plan::gc_init()andSpace::init()are removed. Initialization is now properly done in the respective constructors.