From ed014aafffcc124b2edc2d6440b5515263ce61f8 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Thu, 25 May 2023 12:56:16 +0200 Subject: [PATCH] Mark Closure, Function and Handle as write barrier protected They don't have a mark function, so they don't need any change. --- ext/fiddle/closure.c | 11 +++++++---- ext/fiddle/function.c | 9 +++++++-- ext/fiddle/handle.c | 9 +++++++-- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/ext/fiddle/closure.c b/ext/fiddle/closure.c index 892f522a..3772dfda 100644 --- a/ext/fiddle/closure.c +++ b/ext/fiddle/closure.c @@ -54,10 +54,13 @@ closure_memsize(const void * ptr) } const rb_data_type_t closure_data_type = { - "fiddle/closure", - {0, dealloc, closure_memsize,}, - 0, 0, - RUBY_TYPED_FREE_IMMEDIATELY, + .wrap_struct_name = "fiddle/closure", + .function = { + .dmark = 0, + .dfree = dealloc, + .dsize = closure_memsize + }, + .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED, }; struct callback_args { diff --git a/ext/fiddle/function.c b/ext/fiddle/function.c index 274d181d..5469e09e 100644 --- a/ext/fiddle/function.c +++ b/ext/fiddle/function.c @@ -53,8 +53,13 @@ function_memsize(const void *p) } const rb_data_type_t function_data_type = { - "fiddle/function", - {0, deallocate, function_memsize,}, + .wrap_struct_name = "fiddle/function", + .function = { + .dmark = 0, + .dfree = deallocate, + .dsize = function_memsize + }, + .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED, }; static VALUE diff --git a/ext/fiddle/handle.c b/ext/fiddle/handle.c index ae8cc3a5..8ba41695 100644 --- a/ext/fiddle/handle.c +++ b/ext/fiddle/handle.c @@ -50,8 +50,13 @@ fiddle_handle_memsize(const void *ptr) } static const rb_data_type_t fiddle_handle_data_type = { - "fiddle/handle", - {0, fiddle_handle_free, fiddle_handle_memsize,}, + .wrap_struct_name = "fiddle/handle", + .function = { + .dmark = 0, + .dfree = fiddle_handle_free, + .dsize = fiddle_handle_memsize + }, + .flags = RUBY_TYPED_WB_PROTECTED, }; /*