summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2020-11-28 04:39:09 +0900
committerKoichi Sasada <ko1@atdot.net>2020-12-01 09:39:30 +0900
commit67693d8d806e67d6e50b303dd0be6ec06b81c853 (patch)
treeb0947049393400f046ac554b7f3573cd73b80af0 /gc.c
parente79f1941b29738d95b42f8cb5bdb159e7138cf49 (diff)
ractor local storage C-API
To manage ractor-local data for C extension, the following APIs are defined. * rb_ractor_local_storage_value_newkey * rb_ractor_local_storage_value * rb_ractor_local_storage_value_set * rb_ractor_local_storage_ptr_newkey * rb_ractor_local_storage_ptr * rb_ractor_local_storage_ptr_set At first, you need to create a key of storage by rb_ractor_local_(value|ptr)_newkey(). For ptr storage, it accepts the type of storage, how to mark and how to free with ractor's lifetime. rb_ractor_local_storage_value/set are used to access a VALUE and rb_ractor_local_storage_ptr/set are used to access a pointer. random.c uses this API.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3822
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gc.c b/gc.c
index ab3f8610ce..aae05b5795 100644
--- a/gc.c
+++ b/gc.c
@@ -7273,6 +7273,7 @@ gc_marks_finish(rb_objspace_t *objspace)
}
rb_transient_heap_finish_marking();
+ rb_ractor_finish_marking();
gc_event_hook(objspace, RUBY_INTERNAL_EVENT_GC_END_MARK, 0);