Mercurial > hg > graal-compiler
changeset 23004:df4e158da404
TraceRA: do not split intervals if there is no usage.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Tue, 17 Nov 2015 13:11:31 +0100 |
parents | 1195884e1424 |
children | 6ec03d3b8369 |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanWalker.java |
diffstat | 1 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanWalker.java Mon Nov 16 16:11:50 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanWalker.java Tue Nov 17 13:11:31 2015 +0100 @@ -640,9 +640,13 @@ // The new created part is added to the unhandled list and will get a register // when it is activated int minSplitPos = currentPos + 1; - int maxSplitPos = Math.min(interval.nextUsage(RegisterPriority.MustHaveRegister, minSplitPos), interval.to()); + int maxSplitPos = interval.nextUsage(RegisterPriority.MustHaveRegister, minSplitPos); - splitBeforeUsage(interval, minSplitPos, maxSplitPos); + if (maxSplitPos <= interval.to()) { + splitBeforeUsage(interval, minSplitPos, maxSplitPos); + } else { + Debug.log("No more usage, no need to split: %s", interval); + } assert interval.nextUsage(RegisterPriority.MustHaveRegister, currentPos) == Integer.MAX_VALUE : "the remaining part is spilled to stack and therefore has no register"; splitForSpilling(interval);