/** @file GcPrimitives.cpp * * @author Roland Conybeare, Mar 2026 **/ #include "GcPrimitives.hpp" #include #include //#include #include #include #include #include namespace xo { using xo::mm::ACollector; //using xo::mm::DX1Collector; using xo::mm::Generation; namespace scm { // ----- report-gc-status ----- #ifdef NOT_YET obj xfer_report_gc_status(obj rcx) { bool have_gc = false; if (rcx.collector()) { // status currently only implemented for X1 collector auto gc = obj::from(rcx.collector()); } return DBoolean::box(rcx.allocator(), false); } #endif // ----- request-gc ----- obj xfer_request_gc(obj rcx, obj upto_gco) { bool have_gc = false; if (rcx.collector()) { Generation upto(obj::from(upto_gco)); rcx.collector().request_gc(upto); have_gc = true; } return DBoolean::box(rcx.allocator(), have_gc); } DPrimitive_gco_1_gco * GcPrimitives::make_request_gc_pm(obj mm, StringTable * stbl) { (void)stbl; auto int_ty = DAtomicType::make(mm, Metatype::t_integer()); auto bool_ty = DAtomicType::make(mm, Metatype::t_bool()); auto pm_ty = obj(DFunctionType::_make(mm, bool_ty, int_ty)); return DPrimitive_gco_1_gco::_make(mm, "request-gc", pm_ty, &xfer_request_gc); } } } /* end GcPrimitives.cpp */