diff options
author | Mike Pall <mike> | 2011-06-01 00:49:29 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2011-06-01 00:49:29 +0200 |
commit | 8dd09d5041545f95cd946ebc1e94b397fd2f4811 (patch) | |
tree | 4add62f892a7add41db9d27b6df3c247b5cbee4e /src/lj_record.c | |
parent | 2d0b32500ead55d9dc141e0328b9994db380fb18 (diff) | |
download | luajit-8dd09d5041545f95cd946ebc1e94b397fd2f4811.tar.gz luajit-8dd09d5041545f95cd946ebc1e94b397fd2f4811.tar.bz2 luajit-8dd09d5041545f95cd946ebc1e94b397fd2f4811.zip |
DUALNUM: Fix missing type check for loop index slot.
Diffstat (limited to 'src/lj_record.c')
-rw-r--r-- | src/lj_record.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index b712ec56..689d7b80 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -388,7 +388,8 @@ static void rec_for_loop(jit_State *J, const BCIns *fori, ScEvEntry *scev, | |||
388 | rec_for_check(J, t, dir, stop, step); | 388 | rec_for_check(J, t, dir, stop, step); |
389 | scev->start = tref_ref(find_kinit(J, fori, ra+FORL_IDX, IRT_INT)); | 389 | scev->start = tref_ref(find_kinit(J, fori, ra+FORL_IDX, IRT_INT)); |
390 | tc = (LJ_DUALNUM && | 390 | tc = (LJ_DUALNUM && |
391 | !(scev->start && irref_isk(scev->stop) && irref_isk(scev->step))) ? | 391 | !(scev->start && irref_isk(scev->stop) && irref_isk(scev->step) && |
392 | tvisint(&tv[FORL_IDX]) == (t == IRT_INT))) ? | ||
392 | IRSLOAD_TYPECHECK : 0; | 393 | IRSLOAD_TYPECHECK : 0; |
393 | if (tc) { | 394 | if (tc) { |
394 | J->base[ra+FORL_STOP] = stop; | 395 | J->base[ra+FORL_STOP] = stop; |