mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 15:14:08 +00:00
Merge branch 'master' into v2.1
This commit is contained in:
commit
4bb2e4a547
@ -2342,7 +2342,7 @@ void lj_asm_trace(jit_State *J, GCtrace *T)
|
||||
/* Ensure an initialized instruction beyond the last one for HIOP checks. */
|
||||
/* This also allows one RENAME to be added without reallocating curfinal. */
|
||||
as->orignins = lj_ir_nextins(J);
|
||||
J->cur.ir[as->orignins].o = IR_NOP;
|
||||
lj_ir_nop(&J->cur.ir[as->orignins]);
|
||||
|
||||
/* Setup initial state. Copy some fields to reduce indirections. */
|
||||
as->J = J;
|
||||
|
@ -587,4 +587,12 @@ static LJ_AINLINE int ir_sideeff(IRIns *ir)
|
||||
|
||||
LJ_STATIC_ASSERT((int)IRT_GUARD == (int)IRM_W);
|
||||
|
||||
/* Replace IR instruction with NOP. */
|
||||
static LJ_AINLINE void lj_ir_nop(IRIns *ir)
|
||||
{
|
||||
ir->ot = IRT(IR_NOP, IRT_NIL);
|
||||
ir->op1 = ir->op2 = 0;
|
||||
ir->prev = 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -47,10 +47,7 @@ static void dce_propagate(jit_State *J)
|
||||
pchain[ir->o] = &ir->prev;
|
||||
} else if (!ir_sideeff(ir)) {
|
||||
*pchain[ir->o] = ir->prev; /* Reroute original instruction chain. */
|
||||
ir->t.irt = IRT_NIL;
|
||||
ir->o = IR_NOP; /* Replace instruction with NOP. */
|
||||
ir->op1 = ir->op2 = 0;
|
||||
ir->prev = 0;
|
||||
lj_ir_nop(ir);
|
||||
continue;
|
||||
}
|
||||
if (ir->op1 >= REF_FIRST) irt_setmark(IR(ir->op1)->t);
|
||||
|
@ -370,10 +370,7 @@ TRef LJ_FASTCALL lj_opt_dse_ahstore(jit_State *J)
|
||||
goto doemit; /* No elimination possible. */
|
||||
/* Remove redundant store from chain and replace with NOP. */
|
||||
*refp = store->prev;
|
||||
store->o = IR_NOP;
|
||||
store->t.irt = IRT_NIL;
|
||||
store->op1 = store->op2 = 0;
|
||||
store->prev = 0;
|
||||
lj_ir_nop(store);
|
||||
/* Now emit the new store instead. */
|
||||
}
|
||||
goto doemit;
|
||||
@ -534,10 +531,7 @@ TRef LJ_FASTCALL lj_opt_dse_ustore(jit_State *J)
|
||||
goto doemit; /* No elimination possible. */
|
||||
/* Remove redundant store from chain and replace with NOP. */
|
||||
*refp = store->prev;
|
||||
store->o = IR_NOP;
|
||||
store->t.irt = IRT_NIL;
|
||||
store->op1 = store->op2 = 0;
|
||||
store->prev = 0;
|
||||
lj_ir_nop(store);
|
||||
if (ref+1 < J->cur.nins &&
|
||||
store[1].o == IR_OBAR && store[1].op1 == xref) {
|
||||
IRRef1 *bp = &J->chain[IR_OBAR];
|
||||
@ -546,10 +540,7 @@ TRef LJ_FASTCALL lj_opt_dse_ustore(jit_State *J)
|
||||
bp = &obar->prev;
|
||||
/* Remove OBAR, too. */
|
||||
*bp = obar->prev;
|
||||
obar->o = IR_NOP;
|
||||
obar->t.irt = IRT_NIL;
|
||||
obar->op1 = obar->op2 = 0;
|
||||
obar->prev = 0;
|
||||
lj_ir_nop(obar);
|
||||
}
|
||||
/* Now emit the new store instead. */
|
||||
}
|
||||
@ -640,10 +631,7 @@ TRef LJ_FASTCALL lj_opt_dse_fstore(jit_State *J)
|
||||
goto doemit; /* No elimination possible. */
|
||||
/* Remove redundant store from chain and replace with NOP. */
|
||||
*refp = store->prev;
|
||||
store->o = IR_NOP;
|
||||
store->t.irt = IRT_NIL;
|
||||
store->op1 = store->op2 = 0;
|
||||
store->prev = 0;
|
||||
lj_ir_nop(store);
|
||||
/* Now emit the new store instead. */
|
||||
}
|
||||
goto doemit;
|
||||
@ -894,10 +882,7 @@ TRef LJ_FASTCALL lj_opt_dse_xstore(jit_State *J)
|
||||
goto doemit; /* No elimination possible. */
|
||||
/* Remove redundant store from chain and replace with NOP. */
|
||||
*refp = store->prev;
|
||||
store->o = IR_NOP;
|
||||
store->t.irt = IRT_NIL;
|
||||
store->op1 = store->op2 = 0;
|
||||
store->prev = 0;
|
||||
lj_ir_nop(store);
|
||||
/* Now emit the new store instead. */
|
||||
}
|
||||
goto doemit;
|
||||
|
Loading…
Reference in New Issue
Block a user