diff options
Diffstat (limited to '')
-rw-r--r-- | src/lj_record.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index 7a970628..d44f7737 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -1781,7 +1781,7 @@ noconstify: | |||
1781 | emitir(IRTG(IR_EQ, IRT_PGC), | 1781 | emitir(IRTG(IR_EQ, IRT_PGC), |
1782 | REF_BASE, | 1782 | REF_BASE, |
1783 | emitir(IRT(IR_ADD, IRT_PGC), uref, | 1783 | emitir(IRT(IR_ADD, IRT_PGC), uref, |
1784 | lj_ir_kint(J, (slot - 1 - LJ_FR2) * -8))); | 1784 | lj_ir_kintpgc(J, (slot - 1 - LJ_FR2) * -8))); |
1785 | slot -= (int32_t)J->baseslot; /* Note: slot number may be negative! */ | 1785 | slot -= (int32_t)J->baseslot; /* Note: slot number may be negative! */ |
1786 | if (val == 0) { | 1786 | if (val == 0) { |
1787 | return getslot(J, slot); | 1787 | return getslot(J, slot); |
@@ -1794,7 +1794,7 @@ noconstify: | |||
1794 | } | 1794 | } |
1795 | emitir(IRTG(IR_UGT, IRT_PGC), | 1795 | emitir(IRTG(IR_UGT, IRT_PGC), |
1796 | emitir(IRT(IR_SUB, IRT_PGC), uref, REF_BASE), | 1796 | emitir(IRT(IR_SUB, IRT_PGC), uref, REF_BASE), |
1797 | lj_ir_kint(J, (J->baseslot + J->maxslot) * 8)); | 1797 | lj_ir_kintpgc(J, (J->baseslot + J->maxslot) * 8)); |
1798 | } else { | 1798 | } else { |
1799 | needbarrier = 1; | 1799 | needbarrier = 1; |
1800 | uref = tref_ref(emitir(IRTG(IR_UREFC, IRT_PGC), fn, uv)); | 1800 | uref = tref_ref(emitir(IRTG(IR_UREFC, IRT_PGC), fn, uv)); |
@@ -1972,7 +1972,8 @@ static void rec_varg(jit_State *J, BCReg dst, ptrdiff_t nresults) | |||
1972 | emitir(IRTGI(IR_EQ), fr, | 1972 | emitir(IRTGI(IR_EQ), fr, |
1973 | lj_ir_kint(J, (int32_t)frame_ftsz(J->L->base-1))); | 1973 | lj_ir_kint(J, (int32_t)frame_ftsz(J->L->base-1))); |
1974 | vbase = emitir(IRT(IR_SUB, IRT_IGC), REF_BASE, fr); | 1974 | vbase = emitir(IRT(IR_SUB, IRT_IGC), REF_BASE, fr); |
1975 | vbase = emitir(IRT(IR_ADD, IRT_PGC), vbase, lj_ir_kint(J, frofs-8*(1+LJ_FR2))); | 1975 | vbase = emitir(IRT(IR_ADD, IRT_PGC), vbase, |
1976 | lj_ir_kintpgc(J, frofs-8*(1+LJ_FR2))); | ||
1976 | for (i = 0; i < nload; i++) { | 1977 | for (i = 0; i < nload; i++) { |
1977 | IRType t = itype2irt(&J->L->base[i-1-LJ_FR2-nvararg]); | 1978 | IRType t = itype2irt(&J->L->base[i-1-LJ_FR2-nvararg]); |
1978 | J->base[dst+i] = lj_record_vload(J, vbase, (MSize)i, t); | 1979 | J->base[dst+i] = lj_record_vload(J, vbase, (MSize)i, t); |
@@ -2023,7 +2024,7 @@ static void rec_varg(jit_State *J, BCReg dst, ptrdiff_t nresults) | |||
2023 | IRType t; | 2024 | IRType t; |
2024 | TRef aref, vbase = emitir(IRT(IR_SUB, IRT_IGC), REF_BASE, fr); | 2025 | TRef aref, vbase = emitir(IRT(IR_SUB, IRT_IGC), REF_BASE, fr); |
2025 | vbase = emitir(IRT(IR_ADD, IRT_PGC), vbase, | 2026 | vbase = emitir(IRT(IR_ADD, IRT_PGC), vbase, |
2026 | lj_ir_kint(J, frofs-(8<<LJ_FR2))); | 2027 | lj_ir_kintpgc(J, frofs-(8<<LJ_FR2))); |
2027 | t = itype2irt(&J->L->base[idx-2-LJ_FR2-nvararg]); | 2028 | t = itype2irt(&J->L->base[idx-2-LJ_FR2-nvararg]); |
2028 | aref = emitir(IRT(IR_AREF, IRT_PGC), vbase, tridx); | 2029 | aref = emitir(IRT(IR_AREF, IRT_PGC), vbase, tridx); |
2029 | tr = lj_record_vload(J, aref, 0, t); | 2030 | tr = lj_record_vload(J, aref, 0, t); |