diff options
author | Matt Valentine-House <matt@eightbitraptor.com> | 2023-03-16 22:26:08 +0000 |
---|---|---|
committer | Matt Valentine-House <matt@eightbitraptor.com> | 2023-03-17 19:20:40 +0000 |
commit | 405966e239d9c443f987e7e8f2cec460ffa2da38 (patch) | |
tree | a20a1b19187279d915658577b9cd705ad3519e1c /dir.c | |
parent | 7142328a94c85cc5f23630396f248b32133f87ab (diff) |
Implement declarative references for dir_data_type
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7153
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 15 |
1 files changed, 6 insertions, 9 deletions
@@ -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); |