summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2024-02-13 10:21:22 -0500
committerPeter Zhu <peter@peterzhu.ca>2024-02-14 13:43:02 -0500
commit1d3b306753baf05642836cc6f17015c9309c1420 (patch)
treea47d7afdfd1f2a326cb6d1f70cea5e5e7aa7ccb0 /gc.c
parentfc2c128e7e1fd4a197669d2f04e8457f4188b7f3 (diff)
Move rb_class_allocate_instance from gc.c to object.c
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c40
1 files changed, 1 insertions, 39 deletions
diff --git a/gc.c b/gc.c
index d8df0278fd..2e99911bf4 100644
--- a/gc.c
+++ b/gc.c
@@ -2970,43 +2970,11 @@ rb_newobj(void)
return newobj_of(GET_RACTOR(), 0, T_NONE, 0, 0, 0, FALSE, RVALUE_SIZE);
}
-static VALUE
-rb_class_instance_allocate_internal(VALUE klass, VALUE flags, bool wb_protected)
-{
- GC_ASSERT((flags & RUBY_T_MASK) == T_OBJECT);
- GC_ASSERT(flags & ROBJECT_EMBED);
-
- size_t size;
- uint32_t index_tbl_num_entries = RCLASS_EXT(klass)->max_iv_count;
-
- size = rb_obj_embedded_size(index_tbl_num_entries);
- if (!rb_gc_size_allocatable_p(size)) {
- size = sizeof(struct RObject);
- }
-
- VALUE obj = newobj_of(GET_RACTOR(), klass, flags, 0, 0, 0, wb_protected, size);
- RUBY_ASSERT(rb_shape_get_shape(obj)->type == SHAPE_ROOT);
-
- // Set the shape to the specific T_OBJECT shape which is always
- // SIZE_POOL_COUNT away from the root shape.
- ROBJECT_SET_SHAPE_ID(obj, ROBJECT_SHAPE_ID(obj) + SIZE_POOL_COUNT);
-
-#if RUBY_DEBUG
- RUBY_ASSERT(!rb_shape_obj_too_complex(obj));
- VALUE *ptr = ROBJECT_IVPTR(obj);
- for (size_t i = 0; i < ROBJECT_IV_CAPACITY(obj); i++) {
- ptr[i] = Qundef;
- }
-#endif
-
- return obj;
-}
-
VALUE
rb_newobj_of(VALUE klass, VALUE flags)
{
if ((flags & RUBY_T_MASK) == T_OBJECT) {
- return rb_class_instance_allocate_internal(klass, (flags | ROBJECT_EMBED) & ~FL_WB_PROTECTED, flags & FL_WB_PROTECTED);
+ return rb_class_allocate_instance(klass);
}
else {
return newobj_of(GET_RACTOR(), klass, flags & ~FL_WB_PROTECTED, 0, 0, 0, flags & FL_WB_PROTECTED, RVALUE_SIZE);
@@ -3116,12 +3084,6 @@ rb_imemo_new_debug(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0,
}
#endif
-VALUE
-rb_class_allocate_instance(VALUE klass)
-{
- return rb_class_instance_allocate_internal(klass, T_OBJECT | ROBJECT_EMBED, RGENGC_WB_PROTECTED_OBJECT);
-}
-
static inline void
rb_data_object_check(VALUE klass)
{