mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
Always walk IR constants in ascending order.
Prerequisite for embedding 64 bit constants directly in the IR. Contributed by Peter Cawley.
This commit is contained in:
parent
3152ed98ea
commit
a4067978b6
@ -166,8 +166,8 @@ static void sink_remark_phi(jit_State *J)
|
|||||||
/* Sweep instructions and tag sunken allocations and stores. */
|
/* Sweep instructions and tag sunken allocations and stores. */
|
||||||
static void sink_sweep_ins(jit_State *J)
|
static void sink_sweep_ins(jit_State *J)
|
||||||
{
|
{
|
||||||
IRIns *ir, *irfirst = IR(J->cur.nk);
|
IRIns *ir, *irbase = IR(REF_BASE);
|
||||||
for (ir = IR(J->cur.nins-1) ; ir >= irfirst; ir--) {
|
for (ir = IR(J->cur.nins-1) ; ir >= irbase; ir--) {
|
||||||
switch (ir->o) {
|
switch (ir->o) {
|
||||||
case IR_ASTORE: case IR_HSTORE: case IR_FSTORE: case IR_XSTORE: {
|
case IR_ASTORE: case IR_HSTORE: case IR_FSTORE: case IR_XSTORE: {
|
||||||
IRIns *ira = sink_checkalloc(J, ir);
|
IRIns *ira = sink_checkalloc(J, ir);
|
||||||
@ -217,6 +217,10 @@ static void sink_sweep_ins(jit_State *J)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (ir = IR(J->cur.nk); ir < irbase; ir++) {
|
||||||
|
irt_clearmark(ir->t);
|
||||||
|
ir->prev = REGSP_INIT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocation sinking and store sinking.
|
/* Allocation sinking and store sinking.
|
||||||
|
@ -51,7 +51,7 @@ static void rec_check_ir(jit_State *J)
|
|||||||
{
|
{
|
||||||
IRRef i, nins = J->cur.nins, nk = J->cur.nk;
|
IRRef i, nins = J->cur.nins, nk = J->cur.nk;
|
||||||
lua_assert(nk <= REF_BIAS && nins >= REF_BIAS && nins < 65536);
|
lua_assert(nk <= REF_BIAS && nins >= REF_BIAS && nins < 65536);
|
||||||
for (i = nins-1; i >= nk; i--) {
|
for (i = nk; i < nins; i++) {
|
||||||
IRIns *ir = IR(i);
|
IRIns *ir = IR(i);
|
||||||
uint32_t mode = lj_ir_mode[ir->o];
|
uint32_t mode = lj_ir_mode[ir->o];
|
||||||
IRRef op1 = ir->op1;
|
IRRef op1 = ir->op1;
|
||||||
|
Loading…
Reference in New Issue
Block a user