aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lj_record.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_record.c b/src/lj_record.c
index e283d1e5..42bcca1a 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -1986,6 +1986,7 @@ static void rec_varg(jit_State *J, BCReg dst, ptrdiff_t nresults)
1986 if (nresults >= 0) { /* Known fixed number of results. */ 1986 if (nresults >= 0) { /* Known fixed number of results. */
1987 ptrdiff_t i; 1987 ptrdiff_t i;
1988 if (nvararg > 0) { 1988 if (nvararg > 0) {
1989 ptrdiff_t nload = nvararg >= nresults ? nresults : nvararg;
1989 TRef vbase; 1990 TRef vbase;
1990 if (nvararg >= nresults) 1991 if (nvararg >= nresults)
1991 emitir(IRTGI(IR_GE), fr, lj_ir_kint(J, frofs+8*(int32_t)nresults)); 1992 emitir(IRTGI(IR_GE), fr, lj_ir_kint(J, frofs+8*(int32_t)nresults));
@@ -1993,7 +1994,7 @@ static void rec_varg(jit_State *J, BCReg dst, ptrdiff_t nresults)
1993 emitir(IRTGI(IR_EQ), fr, lj_ir_kint(J, frame_ftsz(J->L->base-1))); 1994 emitir(IRTGI(IR_EQ), fr, lj_ir_kint(J, frame_ftsz(J->L->base-1)));
1994 vbase = emitir(IRTI(IR_SUB), REF_BASE, fr); 1995 vbase = emitir(IRTI(IR_SUB), REF_BASE, fr);
1995 vbase = emitir(IRT(IR_ADD, IRT_PTR), vbase, lj_ir_kint(J, frofs-8)); 1996 vbase = emitir(IRT(IR_ADD, IRT_PTR), vbase, lj_ir_kint(J, frofs-8));
1996 for (i = 0; i < nvararg; i++) { 1997 for (i = 0; i < nload; i++) {
1997 IRType t = itype2irt(&J->L->base[i-1-nvararg]); 1998 IRType t = itype2irt(&J->L->base[i-1-nvararg]);
1998 TRef aref = emitir(IRT(IR_AREF, IRT_PTR), 1999 TRef aref = emitir(IRT(IR_AREF, IRT_PTR),
1999 vbase, lj_ir_kint(J, (int32_t)i)); 2000 vbase, lj_ir_kint(J, (int32_t)i));