Fix TDUP to HLOAD forwarding for DUALNUM builds.

This commit is contained in:
Mike Pall 2012-06-27 19:54:52 +02:00
parent 3dc7baf6af
commit 9a98ba64b4

View File

@ -181,7 +181,8 @@ static TRef fwd_ahload(jit_State *J, IRRef xref)
lua_assert(ir->o != IR_TNEW || irt_isnil(fins->t)); lua_assert(ir->o != IR_TNEW || irt_isnil(fins->t));
if (irt_ispri(fins->t)) { if (irt_ispri(fins->t)) {
return TREF_PRI(irt_type(fins->t)); return TREF_PRI(irt_type(fins->t));
} else if (irt_isnum(fins->t) || irt_isstr(fins->t)) { } else if (irt_isnum(fins->t) || (LJ_DUALNUM && irt_isint(fins->t)) ||
irt_isstr(fins->t)) {
TValue keyv; TValue keyv;
cTValue *tv; cTValue *tv;
IRIns *key = IR(xr->op2); IRIns *key = IR(xr->op2);
@ -191,6 +192,8 @@ static TRef fwd_ahload(jit_State *J, IRRef xref)
lua_assert(itype2irt(tv) == irt_type(fins->t)); lua_assert(itype2irt(tv) == irt_type(fins->t));
if (irt_isnum(fins->t)) if (irt_isnum(fins->t))
return lj_ir_knum_u64(J, tv->u64); return lj_ir_knum_u64(J, tv->u64);
else if (LJ_DUALNUM && irt_isint(fins->t))
return lj_ir_kint(J, intV(tv));
else else
return lj_ir_kstr(J, strV(tv)); return lj_ir_kstr(J, strV(tv));
} }