Skip to content

Commit a3e74fb

Browse files
committed
Mark Closure, Function and Handle as write barrier protected
They don't have a mark function, so they don't need any change.
1 parent 4c0c5da commit a3e74fb

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

ext/fiddle/closure.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,13 @@ closure_memsize(const void * ptr)
5454
}
5555

5656
const rb_data_type_t closure_data_type = {
57-
"fiddle/closure",
58-
{0, dealloc, closure_memsize,},
59-
0, 0,
60-
RUBY_TYPED_FREE_IMMEDIATELY,
57+
.wrap_struct_name = "fiddle/closure",
58+
.function = {
59+
.dmark = 0,
60+
.dfree = dealloc,
61+
.dsize = closure_memsize
62+
},
63+
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
6164
};
6265

6366
struct callback_args {

ext/fiddle/function.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,13 @@ function_memsize(const void *p)
5353
}
5454

5555
const rb_data_type_t function_data_type = {
56-
"fiddle/function",
57-
{0, deallocate, function_memsize,},
56+
.wrap_struct_name = "fiddle/function",
57+
.function = {
58+
.dmark = 0,
59+
.dfree = deallocate,
60+
.dsize = function_memsize
61+
},
62+
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
5863
};
5964

6065
static VALUE

ext/fiddle/handle.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,17 @@ static const rb_data_type_t fiddle_handle_data_type = {
5454
{0, fiddle_handle_free, fiddle_handle_memsize,},
5555
};
5656

57+
const rb_data_type_t fiddle_handle_data_type = {
58+
.wrap_struct_name = "fiddle/handle",
59+
.function = {
60+
.dmark = 0,
61+
.dfree = fiddle_handle_free,
62+
.dsize = fiddle_handle_memsize
63+
},
64+
.flags = RUBY_TYPED_WB_PROTECTED,
65+
};
66+
67+
5768
/*
5869
* call-seq: close
5970
*

0 commit comments

Comments
 (0)