mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
ZJIT: Give up JIT-to-JIT calls for 6+ args (#13939)
This commit is contained in:
parent
d1f38ce4ac
commit
04d43e1870
2 changed files with 18 additions and 0 deletions
|
@ -291,6 +291,9 @@ fn gen_insn(cb: &mut CodeBlock, jit: &mut JITState, asm: &mut Assembler, functio
|
|||
Insn::IfTrue { val, target } => return gen_if_true(jit, asm, opnd!(val), target),
|
||||
Insn::IfFalse { val, target } => return gen_if_false(jit, asm, opnd!(val), target),
|
||||
Insn::SendWithoutBlock { call_info, cd, state, self_val, args, .. } => gen_send_without_block(jit, asm, call_info, *cd, &function.frame_state(*state), opnd!(self_val), opnds!(args))?,
|
||||
// Give up SendWithoutBlockDirect for 6+ args since asm.ccall() doesn't support it.
|
||||
Insn::SendWithoutBlockDirect { call_info, cd, state, self_val, args, .. } if args.len() + 1 > C_ARG_OPNDS.len() => // +1 for self
|
||||
gen_send_without_block(jit, asm, call_info, *cd, &function.frame_state(*state), opnd!(self_val), opnds!(args))?,
|
||||
Insn::SendWithoutBlockDirect { cme, iseq, self_val, args, state, .. } => gen_send_without_block_direct(cb, jit, asm, *cme, *iseq, opnd!(self_val), opnds!(args), &function.frame_state(*state))?,
|
||||
Insn::InvokeBuiltin { bf, args, state } => gen_invokebuiltin(asm, &function.frame_state(*state), bf, opnds!(args))?,
|
||||
Insn::Return { val } => return Some(gen_return(jit, asm, opnd!(val))?),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue