diff options
Diffstat (limited to 'lib/ruby_vm')
-rw-r--r-- | lib/ruby_vm/rjit/insn_compiler.rb | 9 |
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 |