aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-05-26 18:05:19 +0200
committerMike Pall <mike>2011-05-26 18:05:19 +0200
commit840a067d4e3538ab7887d128a817be44333684d6 (patch)
treee9aa7f73aa0a46ff58165b8f58bc6a7af6fecd48 /src
parent8d4400331d4df7d53a80de6f466e6c7ee3ca9380 (diff)
downloadluajit-840a067d4e3538ab7887d128a817be44333684d6.tar.gz
luajit-840a067d4e3538ab7887d128a817be44333684d6.tar.bz2
luajit-840a067d4e3538ab7887d128a817be44333684d6.zip
ARM: Fix rematerialization scheduler.
Diffstat (limited to 'src')
-rw-r--r--src/lj_asm.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 640b6e15..05c43fed 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -488,7 +488,7 @@ static Reg ra_allock(ASMState *as, int32_t k, RegSet allow)
488 } 488 }
489 work = as->freeset & allow; 489 work = as->freeset & allow;
490 if (work) 490 if (work)
491 r = rset_pickbot(work); 491 r = rset_picktop(work);
492 else 492 else
493 r = ra_evict(as, allow); 493 r = ra_evict(as, allow);
494 RA_DBGX((as, "allock $x $r", k, r)); 494 RA_DBGX((as, "allock $x $r", k, r));
@@ -506,7 +506,7 @@ static void ra_allockreg(ASMState *as, int32_t k, Reg r)
506 IRIns irdummy; 506 IRIns irdummy;
507 irdummy.t.irt = IRT_INT; 507 irdummy.t.irt = IRT_INT;
508 ra_scratch(as, RID2RSET(r)); 508 ra_scratch(as, RID2RSET(r));
509 emit_movrr(as, &irdummy, kr, r); 509 emit_movrr(as, &irdummy, r, kr);
510 } 510 }
511} 511}
512#else 512#else
@@ -958,7 +958,8 @@ static void asm_phi_shuffle(ASMState *as)
958 if (r != left) { /* Mismatch? */ 958 if (r != left) { /* Mismatch? */
959 if (!rset_test(as->freeset, r)) { /* PHI register blocked? */ 959 if (!rset_test(as->freeset, r)) { /* PHI register blocked? */
960 IRRef ref = regcost_ref(as->cost[r]); 960 IRRef ref = regcost_ref(as->cost[r]);
961 if (irt_ismarked(IR(ref)->t)) { /* Blocked by other PHI (w/reg)? */ 961 /* Blocked by other PHI (w/reg)? */
962 if (!ra_iskref(ref) && irt_ismarked(IR(ref)->t)) {
962 rset_set(blocked, r); 963 rset_set(blocked, r);
963 if (ra_hasreg(left)) 964 if (ra_hasreg(left))
964 rset_set(blockedby, left); 965 rset_set(blockedby, left);