diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_snap.c | 5 |
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); |