diff --git a/gc.c b/gc.c index 05d75e16e2..9b453cb6ed 100644 --- a/gc.c +++ b/gc.c @@ -2373,6 +2373,13 @@ rb_imemo_new_debug(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0, } #endif +VALUE +rb_class_allocate_instance(VALUE klass) +{ + VALUE flags = T_OBJECT | ROBJECT_EMBED; + return newobj_of(klass, flags, Qundef, Qundef, Qundef, RGENGC_WB_PROTECTED_OBJECT); +} + VALUE rb_data_object_wrap(VALUE klass, void *datap, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree) { diff --git a/internal/gc.h b/internal/gc.h index 7258fed915..490f42e06a 100644 --- a/internal/gc.h +++ b/internal/gc.h @@ -78,6 +78,7 @@ RUBY_ATTR_MALLOC void *rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t); static inline void *ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2)); static inline void *ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2, 3)); static inline void ruby_sized_xfree_inlined(void *ptr, size_t size); +VALUE rb_class_allocate_instance(VALUE klass); RUBY_SYMBOL_EXPORT_BEGIN /* gc.c (export) */ diff --git a/object.c b/object.c index 08fec850d3..a7fb9dd3a0 100644 --- a/object.c +++ b/object.c @@ -2102,13 +2102,6 @@ rb_obj_alloc(VALUE klass) return rb_class_alloc(klass); } -static VALUE -rb_class_allocate_instance(VALUE klass) -{ - NEWOBJ_OF(obj, struct RObject, klass, T_OBJECT | (RGENGC_WB_PROTECTED_OBJECT ? FL_WB_PROTECTED : 0)); - return (VALUE)obj; -} - /* * call-seq: * class.new(args, ...) -> obj