aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2024-03-10 17:23:21 +0100
committerMike Pall <mike>2024-03-10 17:23:21 +0100
commitcae361187e7e1e3545353fb560c032cdace32d5f (patch)
tree996274082a1d9b418b007aa75e07181e9d569b7f
parent302366a33853b730f1b7eb61d792abc4f84f0caa (diff)
downloadluajit-cae361187e7e1e3545353fb560c032cdace32d5f.tar.gz
luajit-cae361187e7e1e3545353fb560c032cdace32d5f.tar.bz2
luajit-cae361187e7e1e3545353fb560c032cdace32d5f.zip
Prevent down-recursion for side traces.
Thanks to Sergey Kaplun. #1169
-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 35e6d6e1..f2a06f41 100644
--- a/src/lj_record.c
+++ b/src/lj_record.c
@@ -728,7 +728,7 @@ void lj_record_ret(jit_State *J, BCReg rbase, ptrdiff_t gotresults)
728 if ((pt->flags & PROTO_NOJIT)) 728 if ((pt->flags & PROTO_NOJIT))
729 lj_trace_err(J, LJ_TRERR_CJITOFF); 729 lj_trace_err(J, LJ_TRERR_CJITOFF);
730 if (J->framedepth == 0 && J->pt && frame == J->L->base - 1) { 730 if (J->framedepth == 0 && J->pt && frame == J->L->base - 1) {
731 if (check_downrec_unroll(J, pt)) { 731 if (!J->cur.root && check_downrec_unroll(J, pt)) {
732 J->maxslot = (BCReg)(rbase + gotresults); 732 J->maxslot = (BCReg)(rbase + gotresults);
733 lj_snap_purge(J); 733 lj_snap_purge(J);
734 rec_stop(J, LJ_TRLINK_DOWNREC, J->cur.traceno); /* Down-recursion. */ 734 rec_stop(J, LJ_TRLINK_DOWNREC, J->cur.traceno); /* Down-recursion. */