Skip to content

Commit 55f09fa

Browse files
Mark rb_io_buffer_type references declaratively
allowing them to support compaction and be moved.
1 parent 532b924 commit 55f09fa

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

io_buffer.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,15 +300,20 @@ rb_io_buffer_type_size(const void *_buffer)
300300
return total;
301301
}
302302

303+
RUBY_REFERENCES(io_buffer_refs) = {
304+
RUBY_REF_EDGE(struct rb_io_buffer, source),
305+
RUBY_REF_END
306+
};
307+
303308
static const rb_data_type_t rb_io_buffer_type = {
304309
.wrap_struct_name = "IO::Buffer",
305310
.function = {
306-
.dmark = rb_io_buffer_type_mark,
311+
.dmark = RUBY_REFS_LIST_PTR(io_buffer_refs),
307312
.dfree = rb_io_buffer_type_free,
308313
.dsize = rb_io_buffer_type_size,
309314
},
310315
.data = NULL,
311-
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
316+
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE | RUBY_TYPED_DECL_MARKING,
312317
};
313318

314319
static inline enum rb_io_buffer_flags

0 commit comments

Comments
 (0)