aboutsummaryrefslogtreecommitdiffstats
path: root/eval_method.ci
diff options
context:
space:
mode:
Diffstat (limited to 'eval_method.ci')
-rw-r--r--eval_method.ci13
1 files changed, 13 insertions, 0 deletions
diff --git a/eval_method.ci b/eval_method.ci
index 5a30596198..08ba953374 100644
--- a/eval_method.ci
+++ b/eval_method.ci
@@ -192,6 +192,19 @@ rb_undef_alloc_func(VALUE klass)
rb_add_method(CLASS_OF(klass), ID_ALLOCATOR, 0, NOEX_UNDEF);
}
+rb_alloc_func_t
+rb_get_alloc_func(VALUE klass)
+{
+ NODE *n;
+ Check_Type(klass, T_CLASS);
+ n = rb_method_node(CLASS_OF(klass), ID_ALLOCATOR);
+ if (!n) return 0;
+ if (nd_type(n) != NODE_METHOD) return 0;
+ n = n->nd_body;
+ if (nd_type(n) != NODE_CFUNC) return 0;
+ return n->nd_cfnc;
+}
+
static NODE *
search_method(VALUE klass, ID id, VALUE *klassp)
{