changeset 19265:3fc30638b010

LowLevelLowTier: add options for optimizations.
author Josef Eisl <josef.eisl@jku.at>
date Tue, 10 Feb 2015 19:48:29 +0100
parents 5ff79efdd040
children c6ec49433b47
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTier.java
diffstat 1 files changed, 26 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTier.java	Tue Feb 10 16:03:45 2015 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTier.java	Tue Feb 10 19:48:29 2015 +0100
@@ -24,12 +24,34 @@
 
 import com.oracle.graal.lir.*;
 import com.oracle.graal.lir.phases.LowLevelLowTierPhase.*;
+import com.oracle.graal.options.*;
 
 public class LowLevelLowTier extends LowLevelPhaseSuite<LowLevelLowTierContext> {
+    public static class Options {
+        // @formatter:off
+        @Option(help = "", type = OptionType.Debug)
+        public static final OptionValue<Boolean> LowLevelOptEdgeMoveOptimizer = new OptionValue<>(true);
+        @Option(help = "", type = OptionType.Debug)
+        public static final OptionValue<Boolean> LowLevelOptControlFlowOptmizer = new OptionValue<>(true);
+        @Option(help = "", type = OptionType.Debug)
+        public static final OptionValue<Boolean> LowLevelOptRedundantMoveElimination = new OptionValue<>(true);
+        @Option(help = "", type = OptionType.Debug)
+        public static final OptionValue<Boolean> LowLevelOptNullCheckOptimizer = new OptionValue<>(true);
+        // @formatter:on
+    }
+
     public LowLevelLowTier() {
-        appendPhase(new EdgeMoveOptimizer());
-        appendPhase(new ControlFlowOptimizer());
-        appendPhase(new RedundantMoveElimination());
-        appendPhase(new NullCheckOptimizer());
+        if (Options.LowLevelOptEdgeMoveOptimizer.getValue()) {
+            appendPhase(new EdgeMoveOptimizer());
+        }
+        if (Options.LowLevelOptControlFlowOptmizer.getValue()) {
+            appendPhase(new ControlFlowOptimizer());
+        }
+        if (Options.LowLevelOptRedundantMoveElimination.getValue()) {
+            appendPhase(new RedundantMoveElimination());
+        }
+        if (Options.LowLevelOptNullCheckOptimizer.getValue()) {
+            appendPhase(new NullCheckOptimizer());
+        }
     }
 }