summaryrefslogtreecommitdiff
path: root/lib/ruby_vm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ruby_vm')
-rw-r--r--lib/ruby_vm/rjit/insn_compiler.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/ruby_vm/rjit/insn_compiler.rb b/lib/ruby_vm/rjit/insn_compiler.rb
index 9e4b28f87a..4151ff6db3 100644
--- a/lib/ruby_vm/rjit/insn_compiler.rb
+++ b/lib/ruby_vm/rjit/insn_compiler.rb
@@ -1435,6 +1435,10 @@ module RubyVM::RJIT
mid = C.vm_ci_mid(cd.ci)
calling = build_calling(ci: cd.ci, block_handler: blockiseq)
+ if calling.flags & C::VM_CALL_FORWARDING != 0
+ return CantCompile
+ end
+
# vm_sendish
cme, comptime_recv_klass = jit_search_method(jit, ctx, asm, mid, calling)
if cme == CantCompile
@@ -4622,6 +4626,11 @@ module RubyVM::RJIT
end
end
+ # Don't compile forwardable iseqs
+ if iseq.body.param.flags.forwardable
+ return CantCompile
+ end
+
# We will not have CantCompile from here.
if block_arg