From 2fcd56258284501c6ac874d26a61ea65a05480af Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Wed, 19 Oct 2011 00:17:19 +0200 Subject: [PATCH] Don't fuse colocated array offsets without -Ofuse. --- src/lj_asm_arm.h | 2 +- src/lj_asm_x86.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lj_asm_arm.h b/src/lj_asm_arm.h index 153bb523..9da618ce 100644 --- a/src/lj_asm_arm.h +++ b/src/lj_asm_arm.h @@ -119,7 +119,7 @@ static int32_t asm_fuseabase(ASMState *as, IRRef ref) { IRIns *ir = IR(ref); if (ir->o == IR_TNEW && ir->op1 <= LJ_MAX_COLOSIZE && - noconflict(as, ref, IR_NEWREF)) + !neverfuse(as) && noconflict(as, ref, IR_NEWREF)) return (int32_t)sizeof(GCtab); return 0; } diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h index 840484d0..f4ac0c10 100644 --- a/src/lj_asm_x86.h +++ b/src/lj_asm_x86.h @@ -118,7 +118,7 @@ static IRRef asm_fuseabase(ASMState *as, IRRef ref) lua_assert(irb->op2 == IRFL_TAB_ARRAY); /* We can avoid the FLOAD of t->array for colocated arrays. */ if (ira->o == IR_TNEW && ira->op1 <= LJ_MAX_COLOSIZE && - noconflict(as, irb->op1, IR_NEWREF, 1)) { + !neverfuse(as) && noconflict(as, irb->op1, IR_NEWREF, 1)) { as->mrm.ofs = (int32_t)sizeof(GCtab); /* Ofs to colocated array. */ return irb->op1; /* Table obj. */ }