summaryrefslogtreecommitdiff
path: root/gc/mmtk/src
diff options
context:
space:
mode:
authorPeter Zhu <[email protected]>2025-01-15 13:07:44 -0500
committergit <[email protected]>2025-01-15 18:08:03 +0000
commitab1565ebe3691d85c0cc38c895ad0b35b35abd40 (patch)
tree304b7a95da577e978da9a0cd19f7d2231dee7be1 /gc/mmtk/src
parente5ad894959c275fa8a7da7371a7dc411e67ed0a4 (diff)
[ruby/mmtk] Add mmtk_plan to GC.config
https://github.com/ruby/mmtk/commit/67da9ea5b8
Diffstat (limited to 'gc/mmtk/src')
-rw-r--r--gc/mmtk/src/api.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/gc/mmtk/src/api.rs b/gc/mmtk/src/api.rs
index 3fa8b2af02..b68b3953d3 100644
--- a/gc/mmtk/src/api.rs
+++ b/gc/mmtk/src/api.rs
@@ -333,6 +333,20 @@ pub extern "C" fn mmtk_worker_count() -> usize {
memory_manager::num_of_workers(mmtk())
}
+#[no_mangle]
+pub extern "C" fn mmtk_plan() -> *const u8 {
+ static NO_GC: &[u8] = b"NoGC\0";
+ static MARK_SWEEP: &[u8] = b"MarkSweep\0";
+ static IMMIX: &[u8] = b"Immix\0";
+
+ match *crate::BINDING.get().unwrap().mmtk.get_options().plan {
+ PlanSelector::NoGC => NO_GC.as_ptr(),
+ PlanSelector::MarkSweep => MARK_SWEEP.as_ptr(),
+ PlanSelector::Immix => IMMIX.as_ptr(),
+ _ => panic!("Unknown plan")
+ }
+}
+
// =============== Miscellaneous ===============
#[no_mangle]