mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
x64/LJ_GC64: Fix assembly of CNEWI with 64 bit constant pointer.
Tracked down by Luke Gorrie.
This commit is contained in:
parent
779a1eb8e6
commit
fa126c5f97
@ -1791,8 +1791,9 @@ static void asm_cnew(ASMState *as, IRIns *ir)
|
|||||||
Reg r64 = sz == 8 ? REX_64 : 0;
|
Reg r64 = sz == 8 ? REX_64 : 0;
|
||||||
if (irref_isk(ir->op2)) {
|
if (irref_isk(ir->op2)) {
|
||||||
IRIns *irk = IR(ir->op2);
|
IRIns *irk = IR(ir->op2);
|
||||||
uint64_t k = irk->o == IR_KINT64 ? ir_k64(irk)->u64 :
|
uint64_t k = (irk->o == IR_KINT64 ||
|
||||||
(uint64_t)(uint32_t)irk->i;
|
(LJ_GC64 && (irk->o == IR_KPTR || irk->o == IR_KKPTR))) ?
|
||||||
|
ir_k64(irk)->u64 : (uint64_t)(uint32_t)irk->i;
|
||||||
if (sz == 4 || checki32((int64_t)k)) {
|
if (sz == 4 || checki32((int64_t)k)) {
|
||||||
emit_i32(as, (int32_t)k);
|
emit_i32(as, (int32_t)k);
|
||||||
emit_rmro(as, XO_MOVmi, r64, RID_RET, sizeof(GCcdata));
|
emit_rmro(as, XO_MOVmi, r64, RID_RET, sizeof(GCcdata));
|
||||||
|
Loading…
Reference in New Issue
Block a user