diff options
author | Mike Pall <mike> | 2022-07-12 22:21:26 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2022-07-12 22:21:26 +0200 |
commit | 6bda30d8c745b3963ba870221b9be6acdffed9b1 (patch) | |
tree | 00cca3c13dc05cc85c84938a26121bfea8989fcc | |
parent | e3bae12fc0461cfa7e4bef3dfed2dad372e5da8d (diff) | |
download | luajit-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.
-rw-r--r-- | src/lj_record.c | 2 |
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); |