mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
Handle calls with max. args in backends even after SPLIT.
This commit is contained in:
parent
1c7650f782
commit
0f79d4741f
@ -948,7 +948,7 @@ static void asm_collectargs(ASMState *as, IRIns *ir,
|
||||
const CCallInfo *ci, IRRef *args)
|
||||
{
|
||||
uint32_t n = CCI_NARGS(ci);
|
||||
lua_assert(n <= CCI_NARGS_MAX);
|
||||
lua_assert(n <= CCI_NARGS_MAX*2); /* Account for split args. */
|
||||
if ((ci->flags & CCI_L)) { *args++ = ASMREF_L; n--; }
|
||||
while (n-- > 1) {
|
||||
ir = IR(ir->op1);
|
||||
|
@ -464,7 +464,7 @@ static void asm_call(ASMState *as, IRIns *ir)
|
||||
|
||||
static void asm_callx(ASMState *as, IRIns *ir)
|
||||
{
|
||||
IRRef args[CCI_NARGS_MAX];
|
||||
IRRef args[CCI_NARGS_MAX*2];
|
||||
CCallInfo ci;
|
||||
IRRef func;
|
||||
IRIns *irf;
|
||||
@ -2295,7 +2295,7 @@ static void asm_ir(ASMState *as, IRIns *ir)
|
||||
/* Ensure there are enough stack slots for call arguments. */
|
||||
static Reg asm_setup_call_slots(ASMState *as, IRIns *ir, const CCallInfo *ci)
|
||||
{
|
||||
IRRef args[CCI_NARGS_MAX];
|
||||
IRRef args[CCI_NARGS_MAX*2];
|
||||
uint32_t i, nargs = (int)CCI_NARGS(ci);
|
||||
int nslots = 0, ngpr = REGARG_NUMGPR, nfpr = REGARG_NUMFPR, fprodd = 0;
|
||||
asm_collectargs(as, ir, ci, args);
|
||||
|
@ -337,7 +337,7 @@ static void asm_call(ASMState *as, IRIns *ir)
|
||||
|
||||
static void asm_callx(ASMState *as, IRIns *ir)
|
||||
{
|
||||
IRRef args[CCI_NARGS_MAX];
|
||||
IRRef args[CCI_NARGS_MAX*2];
|
||||
CCallInfo ci;
|
||||
IRRef func;
|
||||
IRIns *irf;
|
||||
@ -1894,7 +1894,7 @@ static void asm_ir(ASMState *as, IRIns *ir)
|
||||
/* Ensure there are enough stack slots for call arguments. */
|
||||
static Reg asm_setup_call_slots(ASMState *as, IRIns *ir, const CCallInfo *ci)
|
||||
{
|
||||
IRRef args[CCI_NARGS_MAX];
|
||||
IRRef args[CCI_NARGS_MAX*2];
|
||||
uint32_t i, nargs = (int)CCI_NARGS(ci);
|
||||
int nslots = 4, ngpr = REGARG_NUMGPR, nfpr = REGARG_NUMFPR;
|
||||
asm_collectargs(as, ir, ci, args);
|
||||
|
@ -340,7 +340,7 @@ static void asm_call(ASMState *as, IRIns *ir)
|
||||
|
||||
static void asm_callx(ASMState *as, IRIns *ir)
|
||||
{
|
||||
IRRef args[CCI_NARGS_MAX];
|
||||
IRRef args[CCI_NARGS_MAX*2];
|
||||
CCallInfo ci;
|
||||
IRRef func;
|
||||
IRIns *irf;
|
||||
@ -2092,7 +2092,7 @@ static void asm_ir(ASMState *as, IRIns *ir)
|
||||
/* Ensure there are enough stack slots for call arguments. */
|
||||
static Reg asm_setup_call_slots(ASMState *as, IRIns *ir, const CCallInfo *ci)
|
||||
{
|
||||
IRRef args[CCI_NARGS_MAX];
|
||||
IRRef args[CCI_NARGS_MAX*2];
|
||||
uint32_t i, nargs = (int)CCI_NARGS(ci);
|
||||
int nslots = 2, ngpr = REGARG_NUMGPR, nfpr = REGARG_NUMFPR;
|
||||
asm_collectargs(as, ir, ci, args);
|
||||
|
@ -609,7 +609,7 @@ static void *asm_callx_func(ASMState *as, IRIns *irf, IRRef func)
|
||||
|
||||
static void asm_callx(ASMState *as, IRIns *ir)
|
||||
{
|
||||
IRRef args[CCI_NARGS_MAX];
|
||||
IRRef args[CCI_NARGS_MAX*2];
|
||||
CCallInfo ci;
|
||||
IRRef func;
|
||||
IRIns *irf;
|
||||
@ -2742,7 +2742,7 @@ static void asm_ir(ASMState *as, IRIns *ir)
|
||||
/* Ensure there are enough stack slots for call arguments. */
|
||||
static Reg asm_setup_call_slots(ASMState *as, IRIns *ir, const CCallInfo *ci)
|
||||
{
|
||||
IRRef args[CCI_NARGS_MAX];
|
||||
IRRef args[CCI_NARGS_MAX*2];
|
||||
int nslots;
|
||||
asm_collectargs(as, ir, ci, args);
|
||||
nslots = asm_count_call_slots(as, ci, args);
|
||||
|
Loading…
Reference in New Issue
Block a user