Skip to content

Commit

Permalink
lj_asm_x86.h: Fix CNEWI for constant pointers
Browse files Browse the repository at this point in the history
The JITed code for CNEWI did not handle the case where a pointer is
initialized from a constant. This problem was inherited from LuaJIT
v2.1 (LJ_GC64 only) and this fix has been reported to them too.
  • Loading branch information
lukego committed Mar 19, 2017
1 parent d286c95 commit b1cfd27
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/lj_asm_x86.h
Original file line number Diff line number Diff line change
Expand Up @@ -1373,8 +1373,8 @@ static void asm_cnew(ASMState *as, IRIns *ir)
Reg r64 = sz == 8 ? REX_64 : 0;
if (irref_isk(ir->op2)) {
IRIns *irk = IR(ir->op2);
uint64_t k = irk->o == IR_KINT64 ? ir_k64(irk)->u64 :
(uint64_t)(uint32_t)irk->i;
uint64_t k = (irk->o == IR_KINT64 || irk->o == IR_KPTR || irk->o == IR_KPTR)
? ir_k64(irk)->u64 : (uint64_t)(uint32_t)irk->i;
if (sz == 4 || checki32((int64_t)k)) {
emit_i32(as, (int32_t)k);
emit_rmro(as, XO_MOVmi, r64, RID_RET, sizeof(GCcdata));
Expand Down

0 comments on commit b1cfd27

Please sign in to comment.