summaryrefslogtreecommitdiff
path: root/class.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2021-08-24 13:14:23 -0400
committerPeter Zhu <peter@peterzhu.ca>2021-08-25 09:28:21 -0400
commit62bc4a9420fa5786d49391a713bd38b09b8db0ff (patch)
tree8becda3ba7ebd4dce1c1da662272088413c99a5b /class.c
parentc08d4067be83d03a6fcd173ffd2d206a01d09c90 (diff)
downloadruby-62bc4a9420fa5786d49391a713bd38b09b8db0ff.tar.gz
[Feature #18045] Implement size classes for GC
This commits implements size classes in the GC for the Variable Width Allocation feature. Unless `USE_RVARGC` compile flag is set, only a single size class is created, maintaining current behaviour. See the redmine ticket for more details. Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
Diffstat (limited to 'class.c')
-rw-r--r--class.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/class.c b/class.c
index 5fa51df3fa..4c469ffaeb 100644
--- a/class.c
+++ b/class.c
@@ -185,8 +185,7 @@ class_alloc(VALUE flags, VALUE klass)
RVARGC_NEWOBJ_OF(obj, struct RClass, klass, (flags & T_MASK) | FL_PROMOTED1 /* start from age == 2 */ | (RGENGC_WB_PROTECTED_CLASS ? FL_WB_PROTECTED : 0), payload_size);
#if USE_RVARGC
- obj->ptr = (rb_classext_t *)rb_rvargc_payload_data_ptr((VALUE)obj + rb_slot_size());
- RB_OBJ_WRITTEN(obj, Qundef, (VALUE)obj + rb_slot_size());
+ obj->ptr = (rb_classext_t *)rb_gc_rvargc_object_data((VALUE)obj);
#else
obj->ptr = ZALLOC(rb_classext_t);
#endif