|
@@ -728,7 +728,7 @@ void lj_record_ret(jit_State *J, BCReg rbase, ptrdiff_t gotresults)
|
|
if ((pt->flags & PROTO_NOJIT))
|
|
if ((pt->flags & PROTO_NOJIT))
|
|
lj_trace_err(J, LJ_TRERR_CJITOFF);
|
|
lj_trace_err(J, LJ_TRERR_CJITOFF);
|
|
if (J->framedepth == 0 && J->pt && frame == J->L->base - 1) {
|
|
if (J->framedepth == 0 && J->pt && frame == J->L->base - 1) {
|
|
- if (check_downrec_unroll(J, pt)) {
|
|
|
|
|
|
+ if (!J->cur.root && check_downrec_unroll(J, pt)) {
|
|
J->maxslot = (BCReg)(rbase + gotresults);
|
|
J->maxslot = (BCReg)(rbase + gotresults);
|
|
lj_snap_purge(J);
|
|
lj_snap_purge(J);
|
|
rec_stop(J, LJ_TRLINK_DOWNREC, J->cur.traceno); /* Down-recursion. */
|
|
rec_stop(J, LJ_TRLINK_DOWNREC, J->cur.traceno); /* Down-recursion. */
|