diff options
author | Peter Zhu <peter@peterzhu.ca> | 2021-07-19 15:40:00 -0400 |
---|---|---|
committer | Peter Zhu <peter@peterzhu.ca> | 2021-08-23 09:15:42 -0400 |
commit | b2e2cf2dedd104acad8610721db5e4d341f135ef (patch) | |
tree | 237a9acd38706f4490451d9827e784799221b9cd /class.c | |
parent | 48ff7a9f3e47bffb3e4d067a12ba9b936261caa0 (diff) |
[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>
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4680
Diffstat (limited to 'class.c')
-rw-r--r-- | class.c | 3 |
1 files changed, 1 insertions, 2 deletions
@@ -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 |