aboutsummaryrefslogtreecommitdiffstats
path: root/dir.c
diff options
context:
space:
mode:
authorMatt Valentine-House <matt@eightbitraptor.com>2023-03-16 22:26:08 +0000
committerMatt Valentine-House <matt@eightbitraptor.com>2023-03-17 19:20:40 +0000
commit405966e239d9c443f987e7e8f2cec460ffa2da38 (patch)
treea20a1b19187279d915658577b9cd705ad3519e1c /dir.c
parent7142328a94c85cc5f23630396f248b32133f87ab (diff)
downloadruby-405966e239d9c443f987e7e8f2cec460ffa2da38.tar.gz
Implement declarative references for dir_data_type
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/dir.c b/dir.c
index 3f73f83fc5..20429e1516 100644
--- a/dir.c
+++ b/dir.c
@@ -466,13 +466,6 @@ struct dir_data {
};
static void
-dir_mark(void *ptr)
-{
- struct dir_data *dir = ptr;
- rb_gc_mark(dir->path);
-}
-
-static void
dir_free(void *ptr)
{
struct dir_data *dir = 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);