|
@@ -2765,9 +2765,11 @@ void lj_record_setup(jit_State *J)
|
|
}
|
|
}
|
|
lj_snap_replay(J, T);
|
|
lj_snap_replay(J, T);
|
|
sidecheck:
|
|
sidecheck:
|
|
- if (traceref(J, J->cur.root)->nchild >= J->param[JIT_P_maxside] ||
|
|
|
|
- T->snap[J->exitno].count >= J->param[JIT_P_hotexit] +
|
|
|
|
- J->param[JIT_P_tryside]) {
|
|
|
|
|
|
+ if ((traceref(J, J->cur.root)->nchild >= J->param[JIT_P_maxside] ||
|
|
|
|
+ T->snap[J->exitno].count >= J->param[JIT_P_hotexit] +
|
|
|
|
+ J->param[JIT_P_tryside]) &&
|
|
|
|
+ !(bc_op(*J->pc) == BC_JLOOP &&
|
|
|
|
+ bc_op(traceref(J, bc_d(*J->pc))->startins) == BC_ITERN)) {
|
|
lj_record_stop(J, LJ_TRLINK_INTERP, 0);
|
|
lj_record_stop(J, LJ_TRLINK_INTERP, 0);
|
|
}
|
|
}
|
|
} else { /* Root trace. */
|
|
} else { /* Root trace. */
|