MMTk 0.10.0
Pre-release
Pre-release
GC Plans
- Removed plan-specific copy contexts. Now each plan needs to provide a configuration for
GCWorkerCopyContext(similar to how they configMutator). - Fixed a bug that
needs_log_bitwas always set totruefor generational plans, no matter
their barrier used the log bit or not. - Fixed a bug that we may overflow when calculating
get_available_pages().
Policies
- Refactored copy context. Now a copying policy provides its copy context.
- Mark sweep and mark compact now uses
ObjectIteratorfor linear scan.
Scheduler
- Introduced
GCController, a counterpart ofGCWorker, for the controller thread. - Refactored
GCWorker. NowGCWorkeris seperated into two parts, a thread local partGCWorker
which is owned by GC threads, and a shared partGCWorkerSharedthat is shared between GC threads
and the scheduler. - Refactored the creation of the scheduler and the workers to remove some unnecessary
Option<T>andRwLock<T>.
API
- Added
process_bulk()that allows bindings to pass options as a string of key-value pairs. ObjectModel::copy()now takesCopySemanticsas a parameter.- Renamed
Collection::spawn_worker_thread()tospawn_gc_thread(), which is now used to spawn both GC worker and
GC controller. Collection::out_of_memory()now takesAllocationErroras a parameter which hints the binding
on how to handle the OOM error.Collection::out_of_memory()now allows a binding to return from the method in the case of a non-critical OOM.
If a binding returns,alloc()will return a zero address.
Misc
- Added
ObjectIteratorthat provides linear scanning through a region to iterate
objects using the alloc bit. - Added a feature
work_packet_statsto optionally collect work packet statistics. Note that
MMTk used to always collect work packet statistics. - Optimized the access to the SFT map.
- Fixed a few issues with documentation.
- The example header file
mmtk.hnow uses the prefixmmtk_for all the functions.