Fix call unroll checks in the presence of metamethod frames.

This commit is contained in:
Mike Pall 2013-12-09 00:29:56 +01:00
parent 916f09d0a9
commit 0ded8e82a8

View File

@ -1389,6 +1389,7 @@ static void check_call_unroll(jit_State *J, TraceNo lnk)
int32_t count = 0; int32_t count = 0;
if ((J->pt->flags & PROTO_VARARG)) depth--; /* Vararg frame still missing. */ if ((J->pt->flags & PROTO_VARARG)) depth--; /* Vararg frame still missing. */
for (; depth > 0; depth--) { /* Count frames with same prototype. */ for (; depth > 0; depth--) { /* Count frames with same prototype. */
if (frame_iscont(frame)) depth--;
frame = frame_prev(frame); frame = frame_prev(frame);
if (mref(frame_func(frame)->l.pc, void) == pc) if (mref(frame_func(frame)->l.pc, void) == pc)
count++; count++;