From 6374be5a8188ff5ed2c70b9f1d76672c87a0eda7 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Mon, 2 Aug 2021 14:22:47 -0400 Subject: [Feature #18239] Refactor RVARGC alloc functions The allocation functions no longer assume that one RVALUE needs to be allocated. --- class.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'class.c') diff --git a/class.c b/class.c index 5bfbe6445a..c997b0b172 100644 --- a/class.c +++ b/class.c @@ -167,16 +167,16 @@ rb_class_detach_module_subclasses(VALUE klass) static VALUE class_alloc(VALUE flags, VALUE klass) { - size_t payload_size = 0; + size_t alloc_size = sizeof(struct RClass); #if USE_RVARGC - payload_size = sizeof(rb_classext_t); + alloc_size += sizeof(rb_classext_t); #endif - 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); + RVARGC_NEWOBJ_OF(obj, struct RClass, klass, (flags & T_MASK) | FL_PROMOTED1 /* start from age == 2 */ | (RGENGC_WB_PROTECTED_CLASS ? FL_WB_PROTECTED : 0), alloc_size); #if USE_RVARGC - obj->ptr = (rb_classext_t *)rb_gc_rvargc_object_data((VALUE)obj); + obj->ptr = (rb_classext_t *)((char *)obj + sizeof(struct RClass)); #else obj->ptr = ZALLOC(rb_classext_t); #endif -- cgit v1.2.1