changeset 22204:7ba99f3b28de

StackMoveOptimizationPhase: append to other PostAllocationOptimizationPhases.
author Josef Eisl <josef.eisl@jku.at>
date Fri, 10 Jul 2015 14:00:38 +0200
parents 2537256c7f3d
children 40c1eecbb711
files graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64SuitesProvider.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/phases/StackMoveOptimizationPhase.java
diffstat 2 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64SuitesProvider.java	Fri Jul 10 14:01:43 2015 +0200
+++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64SuitesProvider.java	Fri Jul 10 14:00:38 2015 +0200
@@ -38,7 +38,8 @@
     public LIRSuites createLIRSuites() {
         LIRSuites lirSuites = super.createLIRSuites();
         if (StackMoveOptimizationPhase.Options.LIROptStackMoveOptimizer.getValue() && GraalOptions.SSA_LIR.getValue()) {
-            lirSuites.getPostAllocationOptimizationStage().prependPhase(new StackMoveOptimizationPhase());
+            /* Note: this phase must be inserted <b>after</b> RedundantMoveElimination */
+            lirSuites.getPostAllocationOptimizationStage().appendPhase(new StackMoveOptimizationPhase());
         }
         return lirSuites;
     }
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/phases/StackMoveOptimizationPhase.java	Fri Jul 10 14:01:43 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/phases/StackMoveOptimizationPhase.java	Fri Jul 10 14:00:38 2015 +0200
@@ -38,6 +38,13 @@
 import com.oracle.graal.lir.gen.*;
 import com.oracle.graal.lir.phases.*;
 
+/**
+ * Replaces sequential {@link AMD64StackMove}s of the same type with a single
+ * {@link AMD64MultiStackMove} to avoid storing/restoring the scratch register multiple times.
+ *
+ * Note: this phase must be inserted <b>after</b> {@link RedundantMoveElimination} phase because
+ * {@link AMD64MultiStackMove} are not probably detected.
+ */
 public class StackMoveOptimizationPhase extends PostAllocationOptimizationPhase {
     public static class Options {
         // @formatter:off