summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hawthorn <john@hawthorn.email>2021-06-09 19:03:11 -0700
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:36 -0400
commit3fedf8329d0b0916be1cf6ec27ca76e3b2233d03 (patch)
treefb7fcfc5f14d7e1083513ca313c024dab46143ba
parent0fb292609788efed17f482bf9b2474cfc0a7e2fb (diff)
downloadruby-3fedf8329d0b0916be1cf6ec27ca76e3b2233d03.tar.gz
Check for refinements in gen_invokesuper
-rw-r--r--yjit_codegen.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/yjit_codegen.c b/yjit_codegen.c
index 4a8cf6ff32..4e593f1322 100644
--- a/yjit_codegen.c
+++ b/yjit_codegen.c
@@ -2929,6 +2929,11 @@ gen_invokesuper(jitstate_t *jit, ctx_t *ctx)
VALUE current_defined_class = me->defined_class;
ID mid = me->def->original_id;
+
+ // vm_search_normal_superclass
+ if (BUILTIN_TYPE(current_defined_class) == T_ICLASS && FL_TEST_RAW(RBASIC(current_defined_class)->klass, RMODULE_IS_REFINEMENT)) {
+ return YJIT_CANT_COMPILE;
+ }
VALUE comptime_superclass = RCLASS_SUPER(RCLASS_ORIGIN(current_defined_class));
const struct rb_callinfo *ci = cd->ci;