@@ -291,6 +291,9 @@ fn gen_insn(cb: &mut CodeBlock, jit: &mut JITState, asm: &mut Assembler, functio
291291 Insn :: IfTrue { val, target } => return gen_if_true ( jit, asm, opnd ! ( val) , target) ,
292292 Insn :: IfFalse { val, target } => return gen_if_false ( jit, asm, opnd ! ( val) , target) ,
293293 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) ) ?,
294+ // Give up SendWithoutBlockDirect for 6+ args since asm.ccall() doesn't support it.
295+ Insn :: SendWithoutBlockDirect { call_info, cd, state, self_val, args, .. } if args. len ( ) + 1 > C_ARG_OPNDS . len ( ) => // +1 for self
296+ gen_send_without_block ( jit, asm, call_info, * cd, & function. frame_state ( * state) , opnd ! ( self_val) , opnds ! ( args) ) ?,
294297 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) ) ?,
295298 Insn :: InvokeBuiltin { bf, args, state } => gen_invokebuiltin ( asm, & function. frame_state ( * state) , bf, opnds ! ( args) ) ?,
296299 Insn :: Return { val } => return Some ( gen_return ( jit, asm, opnd ! ( val) ) ?) ,
0 commit comments