aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2023-11-09 11:02:36 +0100
committerMike Pall <mike>2023-11-09 11:02:36 +0100
commit65c849390702b1150d52e64db86cbc6b3c98413e (patch)
tree7bc5b97b147fd06e7a894ee450e93bda890cdf67
parent433d7e8d8d182f44e88b5cfdc4b2d3026469dfb7 (diff)
downloadluajit-65c849390702b1150d52e64db86cbc6b3c98413e.tar.gz
luajit-65c849390702b1150d52e64db86cbc6b3c98413e.tar.bz2
luajit-65c849390702b1150d52e64db86cbc6b3c98413e.zip
Invalidate SCEV entry when returning to lower frame.
Thanks to Zhongwei Yao. #1115
-rw-r--r--src/lj_record.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lj_record.c b/src/lj_record.c
index a49f942a..0122105b 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -755,6 +755,7 @@ void lj_record_ret(jit_State *J, BCReg rbase, ptrdiff_t gotresults)
755 emitir(IRTG(IR_RETF, IRT_P32), trpt, trpc); 755 emitir(IRTG(IR_RETF, IRT_P32), trpt, trpc);
756 J->retdepth++; 756 J->retdepth++;
757 J->needsnap = 1; 757 J->needsnap = 1;
758 J->scev.idx = REF_NIL;
758 lua_assert(J->baseslot == 1); 759 lua_assert(J->baseslot == 1);
759 /* Shift result slots up and clear the slots of the new frame below. */ 760 /* Shift result slots up and clear the slots of the new frame below. */
760 memmove(J->base + cbase, J->base-1, sizeof(TRef)*nresults); 761 memmove(J->base + cbase, J->base-1, sizeof(TRef)*nresults);