diff options
Diffstat (limited to 'src/lj_record.c')
-rw-r--r-- | src/lj_record.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index a76f5d94..2c27a718 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -1573,8 +1573,14 @@ void lj_record_ins(jit_State *J) | |||
1573 | rec_comp_fixup(J, pc, (!tvistruecond(&J2G(J)->tmptv2) ^ (bc_op(*pc)&1))); | 1573 | rec_comp_fixup(J, pc, (!tvistruecond(&J2G(J)->tmptv2) ^ (bc_op(*pc)&1))); |
1574 | /* fallthrough */ | 1574 | /* fallthrough */ |
1575 | case LJ_POST_FIXGUARD: /* Fixup and emit pending guard. */ | 1575 | case LJ_POST_FIXGUARD: /* Fixup and emit pending guard. */ |
1576 | if (!tvistruecond(&J2G(J)->tmptv2)) | 1576 | case LJ_POST_FIXGUARDSNAP: /* Fixup and emit pending guard and snapshot. */ |
1577 | if (!tvistruecond(&J2G(J)->tmptv2)) { | ||
1577 | J->fold.ins.o ^= 1; /* Flip guard to opposite. */ | 1578 | J->fold.ins.o ^= 1; /* Flip guard to opposite. */ |
1579 | if (J->postproc == LJ_POST_FIXGUARDSNAP) { | ||
1580 | SnapShot *snap = &J->cur.snap[J->cur.nsnap-1]; | ||
1581 | J->cur.snapmap[snap->mapofs+snap->nent-1]--; /* False -> true. */ | ||
1582 | } | ||
1583 | } | ||
1578 | lj_opt_fold(J); /* Emit pending guard. */ | 1584 | lj_opt_fold(J); /* Emit pending guard. */ |
1579 | /* fallthrough */ | 1585 | /* fallthrough */ |
1580 | case LJ_POST_FIXBOOL: | 1586 | case LJ_POST_FIXBOOL: |