From 405966e239d9c443f987e7e8f2cec460ffa2da38 Mon Sep 17 00:00:00 2001 From: Matt Valentine-House Date: Thu, 16 Mar 2023 22:26:08 +0000 Subject: Implement declarative references for dir_data_type --- dir.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'dir.c') diff --git a/dir.c b/dir.c index 3f73f83fc5..20429e1516 100644 --- a/dir.c +++ b/dir.c @@ -465,13 +465,6 @@ struct dir_data { rb_encoding *enc; }; -static void -dir_mark(void *ptr) -{ - struct dir_data *dir = ptr; - rb_gc_mark(dir->path); -} - static void dir_free(void *ptr) { @@ -487,10 +480,14 @@ dir_memsize(const void *ptr) 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 = { "dir", - {dir_mark, dir_free, dir_memsize,}, - 0, 0, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY + {REFS_LIST_PTR(dir_refs), dir_free, dir_memsize,}, + 0, NULL, RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_DECL_MARKING }; static VALUE dir_close(VALUE); -- cgit v1.2.1