diff options
-rw-r--r-- | gc/mmtk/mmtk.c | 13 | ||||
-rw-r--r-- | gc/mmtk/mmtk.h | 2 | ||||
-rw-r--r-- | gc/mmtk/src/api.rs | 8 |
3 files changed, 9 insertions, 14 deletions
diff --git a/gc/mmtk/mmtk.c b/gc/mmtk/mmtk.c index b1deeef755..f52b183fa7 100644 --- a/gc/mmtk/mmtk.c +++ b/gc/mmtk/mmtk.c @@ -562,16 +562,7 @@ rb_gc_impl_shutdown_free_objects(void *objspace_ptr) void rb_gc_impl_start(void *objspace_ptr, bool full_mark, bool immediate_mark, bool immediate_sweep, bool compact) { - bool enabled = mmtk_gc_enabled_p(); - if (!enabled) { - mmtk_set_gc_enabled(true); - } - - mmtk_handle_user_collection_request(rb_gc_get_ractor_newobj_cache()); - - if (!enabled) { - mmtk_set_gc_enabled(false); - } + mmtk_handle_user_collection_request(rb_gc_get_ractor_newobj_cache(), true, full_mark); } bool @@ -667,7 +658,7 @@ rb_gc_impl_new_obj(void *objspace_ptr, void *cache_ptr, VALUE klass, VALUE flags } if (objspace->gc_stress) { - mmtk_handle_user_collection_request(ractor_cache); + mmtk_handle_user_collection_request(ractor_cache, false, false); } VALUE *alloc_obj = mmtk_alloc(ractor_cache->mutator, alloc_size + 8, MMTk_MIN_OBJ_ALIGN, 0, MMTK_ALLOCATION_SEMANTICS_DEFAULT); diff --git a/gc/mmtk/mmtk.h b/gc/mmtk/mmtk.h index 00004dff4f..614b832af5 100644 --- a/gc/mmtk/mmtk.h +++ b/gc/mmtk/mmtk.h @@ -96,7 +96,7 @@ MMTk_Mutator *mmtk_bind_mutator(MMTk_VMMutatorThread tls); void mmtk_destroy_mutator(MMTk_Mutator *mutator); -void mmtk_handle_user_collection_request(MMTk_VMMutatorThread tls); +void mmtk_handle_user_collection_request(MMTk_VMMutatorThread tls, bool force, bool exhaustive); void mmtk_set_gc_enabled(bool enable); diff --git a/gc/mmtk/src/api.rs b/gc/mmtk/src/api.rs index a3c6d56bb4..c15996727e 100644 --- a/gc/mmtk/src/api.rs +++ b/gc/mmtk/src/api.rs @@ -174,8 +174,12 @@ pub extern "C" fn mmtk_destroy_mutator(mutator: *mut RubyMutator) { // =============== GC =============== #[no_mangle] -pub extern "C" fn mmtk_handle_user_collection_request(tls: VMMutatorThread) { - memory_manager::handle_user_collection_request::<Ruby>(mmtk(), tls); +pub extern "C" fn mmtk_handle_user_collection_request( + tls: VMMutatorThread, + force: bool, + exhaustive: bool, +) { + crate::mmtk().handle_user_collection_request(tls, force, exhaustive); } #[no_mangle] |