Implement declarative references for dir_data_type

This commit is contained in:
Matt Valentine-House 2023-03-16 22:26:08 +00:00
parent 7142328a94
commit 405966e239
Notes: git 2023-03-17 19:21:14 +00:00

15
dir.c
View File

@ -465,13 +465,6 @@ struct dir_data {
rb_encoding *enc; rb_encoding *enc;
}; };
static void
dir_mark(void *ptr)
{
struct dir_data *dir = ptr;
rb_gc_mark(dir->path);
}
static void static void
dir_free(void *ptr) dir_free(void *ptr)
{ {
@ -487,10 +480,14 @@ dir_memsize(const void *ptr)
return sizeof(struct dir_data); return sizeof(struct dir_data);
} }
RUBY_REFERENCES_START(dir_refs)
REF_EDGE(dir_data, path),
RUBY_REFERENCES_END
static const rb_data_type_t dir_data_type = { static const rb_data_type_t dir_data_type = {
"dir", "dir",
{dir_mark, dir_free, dir_memsize,}, {REFS_LIST_PTR(dir_refs), dir_free, dir_memsize,},
0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY 0, NULL, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_DECL_MARKING
}; };
static VALUE dir_close(VALUE); static VALUE dir_close(VALUE);