Make sure to use irt_toitype() macro everywhere.

This commit is contained in:
Mike Pall 2010-12-05 18:51:37 +01:00
parent e7f8cc964e
commit 26830d070d
2 changed files with 8 additions and 9 deletions

View File

@ -1690,7 +1690,7 @@ static void asm_href(ASMState *as, IRIns *ir)
emit_u32(as, LJ_TISNUM); emit_u32(as, LJ_TISNUM);
emit_rmro(as, XO_ARITHi, XOg_CMP, dest, offsetof(Node, key.it)); emit_rmro(as, XO_ARITHi, XOg_CMP, dest, offsetof(Node, key.it));
#else #else
emit_i8(as, ~IRT_NUM); emit_i8(as, LJ_TISNUM);
emit_rmro(as, XO_ARITHi8, XOg_CMP, dest, offsetof(Node, key.it)); emit_rmro(as, XO_ARITHi8, XOg_CMP, dest, offsetof(Node, key.it));
#endif #endif
} }
@ -1709,7 +1709,7 @@ static void asm_href(ASMState *as, IRIns *ir)
emit_sjcc(as, CC_NE, l_next); emit_sjcc(as, CC_NE, l_next);
} }
lua_assert(!irt_isnil(kt)); lua_assert(!irt_isnil(kt));
emit_i8(as, ~irt_type(kt)); emit_i8(as, irt_toitype(kt));
emit_rmro(as, XO_ARITHi8, XOg_CMP, dest, offsetof(Node, key.it)); emit_rmro(as, XO_ARITHi8, XOg_CMP, dest, offsetof(Node, key.it));
} }
emit_sfixup(as, l_loop); emit_sfixup(as, l_loop);
@ -1791,11 +1791,11 @@ static void asm_hrefk(ASMState *as, IRIns *ir)
lua_assert(irt_isnum(irkey->t) || irt_isgcv(irkey->t)); lua_assert(irt_isnum(irkey->t) || irt_isgcv(irkey->t));
/* Assumes -0.0 is already canonicalized to +0.0. */ /* Assumes -0.0 is already canonicalized to +0.0. */
emit_loadu64(as, key, irt_isnum(irkey->t) ? ir_knum(irkey)->u64 : emit_loadu64(as, key, irt_isnum(irkey->t) ? ir_knum(irkey)->u64 :
((uint64_t)~irt_type(irkey->t) << 32) | ((uint64_t)irt_toitype(irkey->t) << 32) |
(uint64_t)(uint32_t)ptr2addr(ir_kgc(irkey))); (uint64_t)(uint32_t)ptr2addr(ir_kgc(irkey)));
} else { } else {
lua_assert(!irt_isnil(irkey->t)); lua_assert(!irt_isnil(irkey->t));
emit_i8(as, ~irt_type(irkey->t)); emit_i8(as, irt_toitype(irkey->t));
emit_rmro(as, XO_ARITHi8, XOg_CMP, node, emit_rmro(as, XO_ARITHi8, XOg_CMP, node,
ofs + (int32_t)offsetof(Node, key.it)); ofs + (int32_t)offsetof(Node, key.it));
} }
@ -1819,7 +1819,7 @@ static void asm_hrefk(ASMState *as, IRIns *ir)
emit_sjcc(as, CC_NE, l_exit); emit_sjcc(as, CC_NE, l_exit);
} }
lua_assert(!irt_isnil(irkey->t)); lua_assert(!irt_isnil(irkey->t));
emit_i8(as, ~irt_type(irkey->t)); emit_i8(as, irt_toitype(irkey->t));
emit_rmro(as, XO_ARITHi8, XOg_CMP, node, emit_rmro(as, XO_ARITHi8, XOg_CMP, node,
ofs + (int32_t)offsetof(Node, key.it)); ofs + (int32_t)offsetof(Node, key.it));
} }
@ -2018,7 +2018,7 @@ static void asm_ahuvload(ASMState *as, IRIns *ir)
emit_u32(as, LJ_TISNUM); emit_u32(as, LJ_TISNUM);
emit_mrm(as, XO_ARITHi, XOg_CMP, RID_MRM); emit_mrm(as, XO_ARITHi, XOg_CMP, RID_MRM);
} else { } else {
emit_i8(as, ~irt_type(ir->t)); emit_i8(as, irt_toitype(ir->t));
emit_mrm(as, XO_ARITHi8, XOg_CMP, RID_MRM); emit_mrm(as, XO_ARITHi8, XOg_CMP, RID_MRM);
} }
} }
@ -2052,7 +2052,7 @@ static void asm_ahustore(ASMState *as, IRIns *ir)
emit_mrm(as, XO_MOVmi, 0, RID_MRM); emit_mrm(as, XO_MOVmi, 0, RID_MRM);
} }
as->mrm.ofs += 4; as->mrm.ofs += 4;
emit_i32(as, (int32_t)~irt_type(ir->t)); emit_i32(as, (int32_t)irt_toitype(ir->t));
emit_mrm(as, XO_MOVmi, 0, RID_MRM); emit_mrm(as, XO_MOVmi, 0, RID_MRM);
} }
} }
@ -2103,7 +2103,7 @@ static void asm_sload(ASMState *as, IRIns *ir)
emit_u32(as, LJ_TISNUM); emit_u32(as, LJ_TISNUM);
emit_rmro(as, XO_ARITHi, XOg_CMP, base, ofs+4); emit_rmro(as, XO_ARITHi, XOg_CMP, base, ofs+4);
} else { } else {
emit_i8(as, ~irt_type(t)); emit_i8(as, irt_toitype(t));
emit_rmro(as, XO_ARITHi8, XOg_CMP, base, ofs+4); emit_rmro(as, XO_ARITHi8, XOg_CMP, base, ofs+4);
} }
} }

View File

@ -363,7 +363,6 @@ typedef struct IRType1 { uint8_t irt; } IRType1;
#define irt_ispri(t) ((uint32_t)irt_type(t) <= IRT_TRUE) #define irt_ispri(t) ((uint32_t)irt_type(t) <= IRT_TRUE)
#define irt_islightud(t) (irt_type(t) == IRT_LIGHTUD) #define irt_islightud(t) (irt_type(t) == IRT_LIGHTUD)
#define irt_isstr(t) (irt_type(t) == IRT_STR) #define irt_isstr(t) (irt_type(t) == IRT_STR)
#define irt_isfunc(t) (irt_type(t) == IRT_FUNC)
#define irt_istab(t) (irt_type(t) == IRT_TAB) #define irt_istab(t) (irt_type(t) == IRT_TAB)
#define irt_isnum(t) (irt_type(t) == IRT_NUM) #define irt_isnum(t) (irt_type(t) == IRT_NUM)
#define irt_isint(t) (irt_type(t) == IRT_INT) #define irt_isint(t) (irt_type(t) == IRT_INT)