diff options
author | Mike Pall <mike> | 2016-05-28 13:36:14 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2016-05-28 13:36:14 +0200 |
commit | 56fe899a06c5a05e8d4ceb8972b3c45dab1c2979 (patch) | |
tree | 97b8837a6ad292b75988df2c3b61c69c4d5c1ebf | |
parent | d9986fbadb6c50b826e39e5f690bcf0b4cd6a20b (diff) | |
download | luajit-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.h | 6 |
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); |