changeset 23027:1aa0e39c8be8

Interval: use EnumSet to check for alwaysInMemory().
author Josef Eisl <josef.eisl@jku.at>
date Wed, 18 Nov 2015 16:09:26 +0100
parents b89e2ecec7ea
children f81a81808795
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/Interval.java
diffstat 1 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/Interval.java	Wed Nov 18 15:53:29 2015 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/Interval.java	Wed Nov 18 16:09:26 2015 +0100
@@ -33,6 +33,7 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.EnumSet;
 import java.util.List;
 
 import jdk.vm.ci.code.BailoutException;
@@ -344,7 +345,9 @@
          * The interval has more than one definition (e.g. resulting from phi moves), so stores to
          * memory are not optimized.
          */
-        NoOptimization
+        NoOptimization;
+
+        public static final EnumSet<SpillState> ALWAYS_IN_MEMORY = EnumSet.of(SpillInDominator, StoreAtDefinition, StartInMemory);
     }
 
     /**
@@ -677,8 +680,7 @@
 
     // returns true if this interval has a shadow copy on the stack that is always correct
     public boolean alwaysInMemory() {
-        return (splitParent().spillState == SpillState.SpillInDominator || splitParent().spillState == SpillState.StoreAtDefinition || splitParent().spillState == SpillState.StartInMemory) &&
-                        !canMaterialize();
+        return SpillState.ALWAYS_IN_MEMORY.contains(spillState()) && !canMaterialize();
     }
 
     void removeFirstUsePos() {