Mercurial > hg > truffle
changeset 19208:81358265e0e0
Make LowLevelLowTierPhase generic.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Fri, 06 Feb 2015 19:43:08 +0100 |
parents | 06a0ca03236f |
children | 1e3b5204776f |
files | graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/EdgeMoveOptimizer.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/NullCheckOptimizer.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/RedundantMoveElimination.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTierPhase.java |
diffstat | 5 files changed, 11 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Fri Feb 06 19:36:07 2015 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Fri Feb 06 19:43:08 2015 +0100 @@ -387,13 +387,13 @@ } try (Scope s = Debug.scope("LowTier")) { - LowLevelLowTierPhase.Context c = new LowLevelLowTierPhase.Context(); - new EdgeMoveOptimizer().apply(target, lirGenRes, c); + LowLevelLowTierPhase.Context<T> c = new LowLevelLowTierPhase.Context<>(); + new EdgeMoveOptimizer<T>().apply(target, lirGenRes, c); ControlFlowOptimizer.optimize(lir, codeEmittingOrder); if (lirGen.canEliminateRedundantMoves()) { - new RedundantMoveElimination().apply(target, lirGenRes, c); + new RedundantMoveElimination<T>().apply(target, lirGenRes, c); } - new NullCheckOptimizer().apply(target, lirGenRes, c); + new NullCheckOptimizer<T>().apply(target, lirGenRes, c); Debug.dump(lir, "After control flow optimization"); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/EdgeMoveOptimizer.java Fri Feb 06 19:36:07 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/EdgeMoveOptimizer.java Fri Feb 06 19:43:08 2015 +0100 @@ -48,7 +48,7 @@ * Because this optimization works best when a block contains only a few moves, it has a huge impact * on the number of blocks that are totally empty. */ -public final class EdgeMoveOptimizer extends LowLevelLowTierPhase { +public final class EdgeMoveOptimizer<B extends AbstractBlock<B>> extends LowLevelLowTierPhase<B> { @Override protected void run(TargetDescription target, LIRGenerationResult lirGenRes) {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/NullCheckOptimizer.java Fri Feb 06 19:36:07 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/NullCheckOptimizer.java Fri Feb 06 19:43:08 2015 +0100 @@ -31,7 +31,7 @@ import com.oracle.graal.lir.gen.*; import com.oracle.graal.lir.phases.*; -public final class NullCheckOptimizer extends LowLevelLowTierPhase { +public final class NullCheckOptimizer<B extends AbstractBlock<B>> extends LowLevelLowTierPhase<B> { @Override protected void run(TargetDescription target, LIRGenerationResult lirGenRes) {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/RedundantMoveElimination.java Fri Feb 06 19:36:07 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/RedundantMoveElimination.java Fri Feb 06 19:43:08 2015 +0100 @@ -41,7 +41,7 @@ /** * Removes move instructions, where the destination value is already in place. */ -public final class RedundantMoveElimination extends LowLevelLowTierPhase { +public final class RedundantMoveElimination<B extends AbstractBlock<B>> extends LowLevelLowTierPhase<B> { @Override protected void run(TargetDescription target, LIRGenerationResult lirGenRes) {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTierPhase.java Fri Feb 06 19:36:07 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTierPhase.java Fri Feb 06 19:43:08 2015 +0100 @@ -23,15 +23,16 @@ package com.oracle.graal.lir.phases; import com.oracle.graal.api.code.*; +import com.oracle.graal.compiler.common.cfg.*; import com.oracle.graal.lir.gen.*; -public abstract class LowLevelLowTierPhase extends LowLevelPhase<LowLevelLowTierPhase.Context> { +public abstract class LowLevelLowTierPhase<B extends AbstractBlock<B>> extends LowLevelPhase<LowLevelLowTierPhase.Context<B>> { - public static final class Context { + public static final class Context<B extends AbstractBlock<B>> { } @Override - protected void run(TargetDescription target, LIRGenerationResult lirGenRes, Context context) { + protected void run(TargetDescription target, LIRGenerationResult lirGenRes, Context<B> context) { run(target, lirGenRes); }