# HG changeset patch # User Josef Eisl # Date 1401890714 -7200 # Node ID f686fae773838edd0f40ac6e8e2c53c75976de21 # Parent 9371b9c246caa0998a1fb05e26246f7590b0ad1a LSRA spill optimization: rename SpillInDominator.MultipleSpills to SpillState.SpillInDominator. diff -r 9371b9c246ca -r f686fae77383 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/Interval.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/Interval.java Wed Jun 04 15:40:23 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/Interval.java Wed Jun 04 16:05:14 2014 +0200 @@ -309,9 +309,10 @@ OneSpillStore, /** - * The interval is spilled multiple times. + * The interval is spilled multiple times or is spilled in a loop. Place the store somewhere + * on the dominator path between the definition and the usages. */ - MultipleSpills, + SpillInDominator, /** * The interval should be stored immediately after its definition to prevent multiple @@ -654,7 +655,7 @@ } void setSpillDefinitionPos(int pos) { - assert spillState() == SpillState.MultipleSpills || spillDefinitionPos() == -1 : "cannot set the position twice"; + assert spillState() == SpillState.SpillInDominator || spillDefinitionPos() == -1 : "cannot set the position twice"; splitParent().spillDefinitionPos = pos; } diff -r 9371b9c246ca -r f686fae77383 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java Wed Jun 04 15:40:23 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java Wed Jun 04 16:05:14 2014 +0200 @@ -455,11 +455,11 @@ case OneSpillStore: { // the interval is spilled more then once - interval.setSpillState(SpillState.MultipleSpills); + interval.setSpillState(SpillState.SpillInDominator); break; } - case MultipleSpills: + case SpillInDominator: case StoreAtDefinition: case StartInMemory: case NoOptimization: @@ -1887,7 +1887,7 @@ private void findSpillPosition() { for (Interval interval : intervals) { - if (interval != null && interval.isSplitParent() && interval.spillState() == SpillState.MultipleSpills) { + if (interval != null && interval.isSplitParent() && interval.spillState() == SpillState.SpillInDominator) { AbstractBlock defBlock = blockForId(interval.spillDefinitionPos()); AbstractBlock spillBlock = null; try (Indent indent = Debug.logAndIndent("interval %s (%s)", interval, defBlock)) {