diff options
| author | Mike Pall <mike> | 2014-07-01 17:53:40 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2014-07-01 17:53:40 +0200 |
| commit | a6c34b85f776d8c83b0c01cbdc50550e613d1fda (patch) | |
| tree | 37953649e11ee0cf53a0aef0b372f72e9155989e /src | |
| parent | bb5dfbb034a75e8a38ba918deb09db07b5989b73 (diff) | |
| download | luajit-a6c34b85f776d8c83b0c01cbdc50550e613d1fda.tar.gz luajit-a6c34b85f776d8c83b0c01cbdc50550e613d1fda.tar.bz2 luajit-a6c34b85f776d8c83b0c01cbdc50550e613d1fda.zip | |
Fix ABC elimination.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_record.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index 47d7115b..12b76bba 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
| @@ -1060,7 +1060,7 @@ static void rec_idx_abc(jit_State *J, TRef asizeref, TRef ikey, uint32_t asize) | |||
| 1060 | lua_assert(irt_isint(J->scev.t) && ir->o == IR_SLOAD); | 1060 | lua_assert(irt_isint(J->scev.t) && ir->o == IR_SLOAD); |
| 1061 | stop = numberVint(&(J->L->base - J->baseslot)[ir->op1 + FORL_STOP]); | 1061 | stop = numberVint(&(J->L->base - J->baseslot)[ir->op1 + FORL_STOP]); |
| 1062 | /* Runtime value for stop of loop is within bounds? */ | 1062 | /* Runtime value for stop of loop is within bounds? */ |
| 1063 | if ((int64_t)stop + ofs < (int64_t)asize) { | 1063 | if ((uint64_t)stop + ofs < (uint64_t)asize) { |
| 1064 | /* Emit invariant bounds check for stop. */ | 1064 | /* Emit invariant bounds check for stop. */ |
| 1065 | emitir(IRTG(IR_ABC, IRT_P32), asizeref, ofs == 0 ? J->scev.stop : | 1065 | emitir(IRTG(IR_ABC, IRT_P32), asizeref, ofs == 0 ? J->scev.stop : |
| 1066 | emitir(IRTI(IR_ADD), J->scev.stop, ofsref)); | 1066 | emitir(IRTI(IR_ADD), J->scev.stop, ofsref)); |
