aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2022-07-12 22:21:26 +0200
committerMike Pall <mike>2022-07-12 22:21:26 +0200
commit6bda30d8c745b3963ba870221b9be6acdffed9b1 (patch)
tree00cca3c13dc05cc85c84938a26121bfea8989fcc /src
parente3bae12fc0461cfa7e4bef3dfed2dad372e5da8d (diff)
downloadluajit-6bda30d8c745b3963ba870221b9be6acdffed9b1.tar.gz
luajit-6bda30d8c745b3963ba870221b9be6acdffed9b1.tar.bz2
luajit-6bda30d8c745b3963ba870221b9be6acdffed9b1.zip
LJ_GC64: Fix IR_VARG offset for fixed number of results.
Reported by George Vaintrub. Fixed by Sergey Kaplun.
Diffstat (limited to 'src')
-rw-r--r--src/lj_record.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lj_record.c b/src/lj_record.c
index faa9a508..9c85f9f7 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -1961,7 +1961,7 @@ static void rec_varg(jit_State *J, BCReg dst, ptrdiff_t nresults)
1961 emitir(IRTGI(IR_EQ), fr, 1961 emitir(IRTGI(IR_EQ), fr,
1962 lj_ir_kint(J, (int32_t)frame_ftsz(J->L->base-1))); 1962 lj_ir_kint(J, (int32_t)frame_ftsz(J->L->base-1)));
1963 vbase = emitir(IRT(IR_SUB, IRT_IGC), REF_BASE, fr); 1963 vbase = emitir(IRT(IR_SUB, IRT_IGC), REF_BASE, fr);
1964 vbase = emitir(IRT(IR_ADD, IRT_PGC), vbase, lj_ir_kint(J, frofs-8)); 1964 vbase = emitir(IRT(IR_ADD, IRT_PGC), vbase, lj_ir_kint(J, frofs-8*(1+LJ_FR2)));
1965 for (i = 0; i < nload; i++) { 1965 for (i = 0; i < nload; i++) {
1966 IRType t = itype2irt(&J->L->base[i-1-LJ_FR2-nvararg]); 1966 IRType t = itype2irt(&J->L->base[i-1-LJ_FR2-nvararg]);
1967 J->base[dst+i] = lj_record_vload(J, vbase, i, t); 1967 J->base[dst+i] = lj_record_vload(J, vbase, i, t);