diff options
author | Mike Pall <mike> | 2013-12-09 00:29:56 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2013-12-09 00:29:56 +0100 |
commit | 0ded8e82a88fadb40b4dd7e6632311781f1b2f91 (patch) | |
tree | bf604581a779f35782c4f617eeea2254d50da5c5 /src | |
parent | 916f09d0a91155ce5ce1a78fdcd40ba42f61e493 (diff) | |
download | luajit-0ded8e82a88fadb40b4dd7e6632311781f1b2f91.tar.gz luajit-0ded8e82a88fadb40b4dd7e6632311781f1b2f91.tar.bz2 luajit-0ded8e82a88fadb40b4dd7e6632311781f1b2f91.zip |
Fix call unroll checks in the presence of metamethod frames.
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_record.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index 30b9efc1..154ff380 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -1389,6 +1389,7 @@ static void check_call_unroll(jit_State *J, TraceNo lnk) | |||
1389 | int32_t count = 0; | 1389 | int32_t count = 0; |
1390 | if ((J->pt->flags & PROTO_VARARG)) depth--; /* Vararg frame still missing. */ | 1390 | if ((J->pt->flags & PROTO_VARARG)) depth--; /* Vararg frame still missing. */ |
1391 | for (; depth > 0; depth--) { /* Count frames with same prototype. */ | 1391 | for (; depth > 0; depth--) { /* Count frames with same prototype. */ |
1392 | if (frame_iscont(frame)) depth--; | ||
1392 | frame = frame_prev(frame); | 1393 | frame = frame_prev(frame); |
1393 | if (mref(frame_func(frame)->l.pc, void) == pc) | 1394 | if (mref(frame_func(frame)->l.pc, void) == pc) |
1394 | count++; | 1395 | count++; |