RJIT: argc check in known cfuncs

This commit is contained in:
John Hawthorn 2023-04-12 16:32:07 -07:00
parent 0ce2bdc76d
commit be08e1b14c
Notes: git 2023-04-13 00:48:59 +00:00

View File

@ -4937,7 +4937,7 @@ module RubyVM::RJIT
end end
# Delegate to codegen for C methods if we have it. # Delegate to codegen for C methods if we have it.
if kw_arg.nil? && flags & C::VM_CALL_OPT_SEND == 0 if kw_arg.nil? && flags & C::VM_CALL_OPT_SEND == 0 && flags & C::VM_CALL_ARGS_SPLAT == 0 && (cfunc_argc == -1 || argc == cfunc_argc)
known_cfunc_codegen = lookup_cfunc_codegen(cme.def) known_cfunc_codegen = lookup_cfunc_codegen(cme.def)
if known_cfunc_codegen&.call(jit, ctx, asm, argc, known_recv_class) if known_cfunc_codegen&.call(jit, ctx, asm, argc, known_recv_class)
# cfunc codegen generated code. Terminate the block so # cfunc codegen generated code. Terminate the block so