Mercurial > hg > graal-compiler
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