diff options
author | Mike Pall <mike> | 2024-03-10 17:23:21 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2024-03-10 17:23:21 +0100 |
commit | cae361187e7e1e3545353fb560c032cdace32d5f (patch) | |
tree | 996274082a1d9b418b007aa75e07181e9d569b7f | |
parent | 302366a33853b730f1b7eb61d792abc4f84f0caa (diff) | |
download | luajit-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.c | 2 |
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. */ |