summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2016-01-18 12:02:01 +0100
committerMike Pall <mike>2016-01-18 12:02:01 +0100
commit39eddd3b96e3a234973906a4b1979e4f64e87e1c (patch)
treeed8fc41df8b707429d0a1650c86e587cc88b4c29
parent04d28068233a8ddb28842c22f1b831f2ced8fe1a (diff)
downloadluajit2-39eddd3b96e3a234973906a4b1979e4f64e87e1c.tar.gz
Always merge snapshots without instructions inbetween.
Thanks to Vyacheslav Egorov.
-rw-r--r--src/lj_snap.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_snap.c b/src/lj_snap.c
index 62515ed0..368bad33 100644
--- a/src/lj_snap.c
+++ b/src/lj_snap.c
@@ -145,8 +145,8 @@ void lj_snap_add(jit_State *J)
MSize nsnap = J->cur.nsnap;
MSize nsnapmap = J->cur.nsnapmap;
/* Merge if no ins. inbetween or if requested and no guard inbetween. */
- if (J->mergesnap ? !irt_isguard(J->guardemit) :
- (nsnap > 0 && J->cur.snap[nsnap-1].ref == J->cur.nins)) {
+ if ((nsnap > 0 && J->cur.snap[nsnap-1].ref == J->cur.nins) ||
+ (J->mergesnap && !irt_isguard(J->guardemit))) {
if (nsnap == 1) { /* But preserve snap #0 PC. */
emitir_raw(IRT(IR_NOP, IRT_NIL), 0, 0);
goto nomerge;