Browse Source

Always merge snapshots without instructions inbetween.

Thanks to Vyacheslav Egorov.
Mike Pall 9 years ago
parent
commit
39eddd3b96
1 changed files with 2 additions and 2 deletions
  1. 2 2
      src/lj_snap.c

+ 2 - 2
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;