changeset 19224:0ea5aa5f6b2e

GraalCompiler.emitLowLevel: use Backend.getLowLevelCompilerConfiguration().
author Josef Eisl <josef.eisl@jku.at>
date Mon, 09 Feb 2015 13:39:11 +0100
parents 8073a99a1620
children e20a4aab49ad
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java
diffstat 1 files changed, 4 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java	Mon Feb 09 13:30:03 2015 +0100
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java	Mon Feb 09 13:39:11 2015 +0100
@@ -41,13 +41,10 @@
 import com.oracle.graal.debug.Debug.Scope;
 import com.oracle.graal.debug.internal.*;
 import com.oracle.graal.lir.*;
-import com.oracle.graal.lir.alloc.lsra.*;
 import com.oracle.graal.lir.asm.*;
-import com.oracle.graal.lir.constopt.*;
 import com.oracle.graal.lir.framemap.*;
 import com.oracle.graal.lir.gen.*;
 import com.oracle.graal.lir.phases.*;
-import com.oracle.graal.lir.stackslotalloc.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.cfg.*;
 import com.oracle.graal.nodes.spi.*;
@@ -349,34 +346,20 @@
 
     public static <T extends AbstractBlock<T>> LIRGenerationResult emitLowLevel(Backend backend, TargetDescription target, List<T> codeEmittingOrder, List<T> linearScanOrder,
                     LIRGenerationResult lirGenRes, LIRGeneratorTool lirGen) {
+        LowLevelCompilerConfiguration config = backend.getLowLevelCompilerConfiguration();
         try (Scope s0 = Debug.scope("LowLevelHighTier")) {
             LowLevelHighTierPhase.Context c = new LowLevelHighTierPhase.Context(lirGen);
-            if (ConstantLoadOptimization.Options.ConstantLoadOptimization.getValue()) {
-                new ConstantLoadOptimization<T>().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
-            }
+            config.<T> createHighTier().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
         }
 
         try (Scope s0 = Debug.scope("LowLevelMidTier")) {
             LowLevelMidTierPhase.Context c = new LowLevelMidTierPhase.Context();
-            new LinearScanPhase<T>().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
-
-            // build frame map
-            if (LSStackSlotAllocator.Options.LSStackSlotAllocation.getValue()) {
-                new LSStackSlotAllocator<T>().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
-            } else {
-                new SimpleStackSlotAllocator<T>().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
-            }
-            // currently we mark locations only if we do register allocation
-            new LocationMarker<T>().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
+            config.<T> createMidTier().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
         }
 
         try (Scope s = Debug.scope("LowLevelLowTier")) {
             LowLevelLowTierPhase.Context c = new LowLevelLowTierPhase.Context();
-            new EdgeMoveOptimizer<T>().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
-            new ControlFlowOptimizer<T>().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
-
-            new RedundantMoveElimination<T>().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
-            new NullCheckOptimizer<T>().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
+            config.<T> createLowTier().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c);
         }
 
         return lirGenRes;