aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2012-05-14 17:35:05 +0200
committerMike Pall <mike>2012-05-14 17:35:05 +0200
commitf3197046b801b20e28a2b9acc6fb0ee4f51f9f2f (patch)
tree7aa4b146f99b15e9167c82b0a4a2a9cf706fb45a
parente6bcb545f87da05f46f2d3d71f8c372e5ca27bd2 (diff)
downloadluajit-f3197046b801b20e28a2b9acc6fb0ee4f51f9f2f.tar.gz
luajit-f3197046b801b20e28a2b9acc6fb0ee4f51f9f2f.tar.bz2
luajit-f3197046b801b20e28a2b9acc6fb0ee4f51f9f2f.zip
Preserve snapshot #0 PC for root traces.
-rw-r--r--src/lj_snap.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/lj_snap.c b/src/lj_snap.c
index ddf07b6a..bbe7dcae 100644
--- a/src/lj_snap.c
+++ b/src/lj_snap.c
@@ -136,6 +136,11 @@ void lj_snap_add(jit_State *J)
136 /* Merge if no ins. inbetween or if requested and no guard inbetween. */ 136 /* Merge if no ins. inbetween or if requested and no guard inbetween. */
137 if (J->mergesnap ? !irt_isguard(J->guardemit) : 137 if (J->mergesnap ? !irt_isguard(J->guardemit) :
138 (nsnap > 0 && J->cur.snap[nsnap-1].ref == J->cur.nins)) { 138 (nsnap > 0 && J->cur.snap[nsnap-1].ref == J->cur.nins)) {
139 if (nsnap == 1 && J->parent == 0) {
140 /* But preserve snap #0 PC for root traces. */
141 J->mergesnap = 0;
142 return;
143 }
139 nsnapmap = J->cur.snap[--nsnap].mapofs; 144 nsnapmap = J->cur.snap[--nsnap].mapofs;
140 } else { 145 } else {
141 lj_snap_grow_buf(J, nsnap+1); 146 lj_snap_grow_buf(J, nsnap+1);