aboutsummaryrefslogtreecommitdiff
path: root/src/lj_asm_x86.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lj_asm_x86.h9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h
index 38069e1d..4465efa2 100644
--- a/src/lj_asm_x86.h
+++ b/src/lj_asm_x86.h
@@ -1768,14 +1768,11 @@ static void asm_sload(ASMState *as, IRIns *ir)
1768 if ((ir->op2 & IRSLOAD_TYPECHECK)) { 1768 if ((ir->op2 & IRSLOAD_TYPECHECK)) {
1769 /* Need type check, even if the load result is unused. */ 1769 /* Need type check, even if the load result is unused. */
1770 asm_guardcc(as, irt_isnum(t) ? CC_AE : CC_NE); 1770 asm_guardcc(as, irt_isnum(t) ? CC_AE : CC_NE);
1771 if (LJ_64 && irt_type(t) >= IRT_NUM) { 1771 if ((LJ_64 && irt_type(t) >= IRT_NUM) || (ir->op2 & IRSLOAD_KEYINDEX)) {
1772 lj_assertA(irt_isinteger(t) || irt_isnum(t), 1772 lj_assertA(irt_isinteger(t) || irt_isnum(t),
1773 "bad SLOAD type %d", irt_type(t)); 1773 "bad SLOAD type %d", irt_type(t));
1774#if LJ_GC64 1774 emit_u32(as, (ir->op2 & IRSLOAD_KEYINDEX) ? LJ_KEYINDEX :
1775 emit_u32(as, LJ_TISNUM << 15); 1775 LJ_GC64 ? (LJ_TISNUM << 15) : LJ_TISNUM);
1776#else
1777 emit_u32(as, LJ_TISNUM);
1778#endif
1779 emit_rmro(as, XO_ARITHi, XOg_CMP, base, ofs+4); 1776 emit_rmro(as, XO_ARITHi, XOg_CMP, base, ofs+4);
1780#if LJ_GC64 1777#if LJ_GC64
1781 } else if (irt_isnil(t)) { 1778 } else if (irt_isnil(t)) {