Mercurial > hg > graal-compiler
changeset 22212:34c1bf2ee374
LinearScanWalker: minor refactoring of debug code.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Thu, 09 Jul 2015 11:16:30 +0200 |
parents | a634b6f23af6 |
children | 8a005c1541aa |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java |
diffstat | 1 files changed, 17 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java Wed Jul 08 18:18:24 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java Thu Jul 09 11:16:30 2015 +0200 @@ -781,16 +781,7 @@ spillCollectInactiveAny(interval); if (Debug.isLogEnabled()) { - try (Indent indent2 = Debug.logAndIndent("state of registers:")) { - for (Register reg : availableRegs) { - int i = reg.number; - try (Indent indent3 = Debug.logAndIndent("reg %d: usePos: %d, blockPos: %d, intervals: ", i, usePos[i], blockPos[i])) { - for (int j = 0; j < spillIntervals[i].size(); j++) { - Debug.log("%d ", spillIntervals[i].get(j).operandNumber); - } - } - } - } + printRegisterState(); } // the register must be free at least until this position @@ -820,10 +811,11 @@ } if (firstUsage <= interval.from() + 1) { - String description = "cannot spill interval that is used in first instruction (possible reason: no register found) firstUsage=" + firstUsage + ", interval.from()=" + - interval.from() + "; already used candidates: " + Arrays.toString(availableRegs); + String description = "cannot spill interval (" + interval + ") that is used in first instruction (possible reason: no register found) firstUsage=" + firstUsage + + ", interval.from()=" + interval.from() + "; already used candidates: " + Arrays.toString(availableRegs); // assign a reasonable register and do a bailout in product mode to avoid errors allocator.assignSpillSlot(interval); + Debug.dump(allocator.ir, description); allocator.printIntervals(description); throw new OutOfRegistersException("LinearScan: no register found", description); } @@ -853,6 +845,19 @@ } } + void printRegisterState() { + try (Indent indent2 = Debug.logAndIndent("state of registers:")) { + for (Register reg : availableRegs) { + int i = reg.number; + try (Indent indent3 = Debug.logAndIndent("reg %d: usePos: %d, blockPos: %d, intervals: ", i, usePos[i], blockPos[i])) { + for (int j = 0; j < spillIntervals[i].size(); j++) { + Debug.log("%s ", spillIntervals[i].get(j)); + } + } + } + } + } + boolean noAllocationPossible(Interval interval) { if (allocator.callKillsRegisters) { // fast calculation of intervals that can never get a register because the