aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gc.c7
-rw-r--r--internal/gc.h1
-rw-r--r--object.c7
3 files changed, 8 insertions, 7 deletions
diff --git a/gc.c b/gc.c
index 05d75e16e2..9b453cb6ed 100644
--- a/gc.c
+++ b/gc.c
@@ -2374,6 +2374,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)
{
RUBY_ASSERT_ALWAYS(dfree != (RUBY_DATA_FUNC)1);
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