Skip to content

Commit

Permalink
LJ_GC64: Fix HREF for pointers.
Browse files Browse the repository at this point in the history
Contributed by Peter Cawley.
  • Loading branch information
Mike Pall committed Oct 19, 2016
1 parent 6a25014 commit bdcaf4b
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
11 changes: 11 additions & 0 deletions src/lj_asm_x86.h
Original file line number Diff line number Diff line change
Expand Up @@ -1246,7 +1246,18 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge)
#endif
} else {
emit_rr(as, XO_MOV, tmp, key);
#if LJ_GC64
emit_gri(as, XG_ARITHi(XOg_XOR), dest, irt_toitype(kt) << 15);
if ((as->flags & JIT_F_BMI2)) {
emit_i8(as, 32);
emit_mrm(as, XV_RORX|VEX_64, dest, key);
} else {
emit_shifti(as, XOg_SHR|REX_64, dest, 32);
emit_rr(as, XO_MOV, dest|REX_64, key|REX_64);
}
#else
emit_rmro(as, XO_LEA, dest, key, HASH_BIAS);
#endif
}
}
}
Expand Down
1 change: 0 additions & 1 deletion src/lj_tab.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ static LJ_AINLINE Node *hashmask(const GCtab *t, uint32_t hash)

#define hashlohi(t, lo, hi) hashmask((t), hashrot((lo), (hi)))
#define hashnum(t, o) hashlohi((t), (o)->u32.lo, ((o)->u32.hi << 1))
#define hashptr(t, p) hashlohi((t), u32ptr(p), u32ptr(p) + HASH_BIAS)
#if LJ_GC64
#define hashgcref(t, r) \
hashlohi((t), (uint32_t)gcrefu(r), (uint32_t)(gcrefu(r) >> 32))
Expand Down

0 comments on commit bdcaf4b

Please sign in to comment.