diff options
-rw-r--r-- | lib/ruby_vm/rjit/insn_compiler.rb | 13 | ||||
-rw-r--r-- | rjit_c.h | 3 |
2 files changed, 10 insertions, 6 deletions
diff --git a/lib/ruby_vm/rjit/insn_compiler.rb b/lib/ruby_vm/rjit/insn_compiler.rb index 8281511e97..070049ca93 100644 --- a/lib/ruby_vm/rjit/insn_compiler.rb +++ b/lib/ruby_vm/rjit/insn_compiler.rb @@ -4807,13 +4807,16 @@ module RubyVM::RJIT # @param ctx [RubyVM::RJIT::Context] # @param asm [RubyVM::RJIT::Assembler] def jit_caller_setup_arg(jit, ctx, asm, flags) - if flags & C::VM_CALL_ARGS_SPLAT != 0 - # We don't support vm_caller_setup_arg_splat + if flags & C::VM_CALL_ARGS_SPLAT != 0 && flags & C::VM_CALL_KW_SPLAT != 0 + asm.incr_counter(:send_args_splat_kw_splat) + return CantCompile + elsif flags & C::VM_CALL_ARGS_SPLAT != 0 asm.incr_counter(:send_args_splat) return CantCompile - end - if flags & (C::VM_CALL_KWARG | C::VM_CALL_KW_SPLAT) != 0 - # We don't support keyword args either + elsif flags & C::VM_CALL_KW_SPLAT != 0 + asm.incr_counter(:send_args_kw_splat) + return CantCompile + elsif flags & C::VM_CALL_KWARG != 0 asm.incr_counter(:send_kwarg) return CantCompile end @@ -20,10 +20,11 @@ RJIT_RUNTIME_COUNTERS( vm_insns_count, rjit_insns_count, + send_args_splat_kw_splat, send_args_splat, - send_klass_megamorphic, send_kw_splat, send_kwarg, + send_klass_megamorphic, send_missing_cme, send_private, send_protected_check_failed, |