aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2016-05-28 13:36:14 +0200
committerMike Pall <mike>2016-05-28 13:36:14 +0200
commit56fe899a06c5a05e8d4ceb8972b3c45dab1c2979 (patch)
tree97b8837a6ad292b75988df2c3b61c69c4d5c1ebf
parentd9986fbadb6c50b826e39e5f690bcf0b4cd6a20b (diff)
downloadluajit-56fe899a06c5a05e8d4ceb8972b3c45dab1c2979.tar.gz
luajit-56fe899a06c5a05e8d4ceb8972b3c45dab1c2979.tar.bz2
luajit-56fe899a06c5a05e8d4ceb8972b3c45dab1c2979.zip
Proper fix for LJ_GC64 changes to asm_href().
-rw-r--r--src/lj_asm_x86.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h
index f5230a44..dcdc727a 100644
--- a/src/lj_asm_x86.h
+++ b/src/lj_asm_x86.h
@@ -1163,7 +1163,8 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge)
1163#if LJ_64 && !LJ_GC64 1163#if LJ_64 && !LJ_GC64
1164 } else if (irt_islightud(kt)) { 1164 } else if (irt_islightud(kt)) {
1165 emit_rmro(as, XO_CMP, key|REX_64, dest, offsetof(Node, key.u64)); 1165 emit_rmro(as, XO_CMP, key|REX_64, dest, offsetof(Node, key.u64));
1166#elif LJ_GC64 1166#endif
1167#if LJ_GC64
1167 } else if (irt_isaddr(kt)) { 1168 } else if (irt_isaddr(kt)) {
1168 if (isk) { 1169 if (isk) {
1169 TValue k; 1170 TValue k;
@@ -1180,7 +1181,7 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge)
1180 lua_assert(irt_ispri(kt) && !irt_isnil(kt)); 1181 lua_assert(irt_ispri(kt) && !irt_isnil(kt));
1181 emit_u32(as, (irt_toitype(kt)<<15)|0x7fff); 1182 emit_u32(as, (irt_toitype(kt)<<15)|0x7fff);
1182 emit_rmro(as, XO_ARITHi, XOg_CMP, dest, offsetof(Node, key.it)); 1183 emit_rmro(as, XO_ARITHi, XOg_CMP, dest, offsetof(Node, key.it));
1183#endif 1184#else
1184 } else { 1185 } else {
1185 if (!irt_ispri(kt)) { 1186 if (!irt_ispri(kt)) {
1186 lua_assert(irt_isaddr(kt)); 1187 lua_assert(irt_isaddr(kt));
@@ -1194,6 +1195,7 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge)
1194 lua_assert(!irt_isnil(kt)); 1195 lua_assert(!irt_isnil(kt));
1195 emit_i8(as, irt_toitype(kt)); 1196 emit_i8(as, irt_toitype(kt));
1196 emit_rmro(as, XO_ARITHi8, XOg_CMP, dest, offsetof(Node, key.it)); 1197 emit_rmro(as, XO_ARITHi8, XOg_CMP, dest, offsetof(Node, key.it));
1198#endif
1197 } 1199 }
1198 emit_sfixup(as, l_loop); 1200 emit_sfixup(as, l_loop);
1199 checkmclim(as); 1201 checkmclim(as);