# HG changeset patch # User Josef Eisl # Date 1423477393 -3600 # Node ID edd93c34d01513991dc815124b1b44cf3284cfc3 # Parent 58f59bada2c11475b83b4b68c598f42d7fbc0ad8 LowLevelPhase: pass codeEmittingOrder and linearScanOrder to apply(). diff -r 58f59bada2c1 -r edd93c34d015 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Mon Feb 09 11:10:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Mon Feb 09 11:23:13 2015 +0100 @@ -352,37 +352,37 @@ try (Scope s0 = Debug.scope("LowLevelHighTier")) { LowLevelHighTierPhase.Context c = new LowLevelHighTierPhase.Context(lirGen); if (ConstantLoadOptimization.Options.ConstantLoadOptimization.getValue()) { - new ConstantLoadOptimization().apply(target, lirGenRes, c); + new ConstantLoadOptimization().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c); } } try (Scope s0 = Debug.scope("LowLevelMidTier")) { - LowLevelMidTierPhase.Context c = new LowLevelMidTierPhase.Context<>(codeEmittingOrder, linearScanOrder); + LowLevelMidTierPhase.Context c = new LowLevelMidTierPhase.Context(); if (backend.shouldAllocateRegisters()) { - new LinearScanPhase().apply(target, lirGenRes, c); + new LinearScanPhase().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c); } // build frame map if (LSStackSlotAllocator.Options.LSStackSlotAllocation.getValue()) { - new LSStackSlotAllocator().apply(target, lirGenRes, c); + new LSStackSlotAllocator().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c); } else { - new SimpleStackSlotAllocator().apply(target, lirGenRes, c); + new SimpleStackSlotAllocator().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c); } if (backend.shouldAllocateRegisters()) { // currently we mark locations only if we do register allocation - new LocationMarker().apply(target, lirGenRes, c); + new LocationMarker().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c); } } try (Scope s = Debug.scope("LowLevelLowTier")) { - LowLevelLowTierPhase.Context c = new LowLevelLowTierPhase.Context<>(codeEmittingOrder, linearScanOrder); - new EdgeMoveOptimizer().apply(target, lirGenRes, c); - new ControlFlowOptimizer().apply(target, lirGenRes, c); + LowLevelLowTierPhase.Context c = new LowLevelLowTierPhase.Context(); + new EdgeMoveOptimizer().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c); + new ControlFlowOptimizer().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c); if (lirGen.canEliminateRedundantMoves()) { - new RedundantMoveElimination().apply(target, lirGenRes, c); + new RedundantMoveElimination().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c); } - new NullCheckOptimizer().apply(target, lirGenRes, c); + new NullCheckOptimizer().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, c); } return lirGenRes; diff -r 58f59bada2c1 -r edd93c34d015 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/ConstantLoadOptimization.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/ConstantLoadOptimization.java Mon Feb 09 11:10:00 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/ConstantLoadOptimization.java Mon Feb 09 11:23:13 2015 +0100 @@ -47,7 +47,7 @@ * a constant, which is potentially scheduled into a block with high probability, with one or more * definitions in blocks with a lower probability. */ -public final class ConstantLoadOptimization extends LowLevelHighTierPhase { +public final class ConstantLoadOptimization> extends LowLevelHighTierPhase { public static class Options { // @formatter:off @@ -57,7 +57,7 @@ } @Override - protected void run(TargetDescription target, LIRGenerationResult lirGenRes, LIRGeneratorTool lirGen) { + protected void run(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder, LIRGeneratorTool lirGen) { new Optimization(lirGenRes.getLIR(), lirGen).apply(); } diff -r 58f59bada2c1 -r edd93c34d015 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelHighTierPhase.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelHighTierPhase.java Mon Feb 09 11:10:00 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelHighTierPhase.java Mon Feb 09 11:23:13 2015 +0100 @@ -22,10 +22,13 @@ */ package com.oracle.graal.lir.phases; +import java.util.*; + import com.oracle.graal.api.code.*; +import com.oracle.graal.compiler.common.cfg.*; import com.oracle.graal.lir.gen.*; -public abstract class LowLevelHighTierPhase extends LowLevelPhase { +public abstract class LowLevelHighTierPhase> extends LowLevelPhase { public static final class Context { private final LIRGeneratorTool lirGen; @@ -37,10 +40,10 @@ } @Override - protected void run(TargetDescription target, LIRGenerationResult lirGenRes, Context context) { - run(target, lirGenRes, context.lirGen); + protected final void run(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder, Context context) { + run(target, lirGenRes, codeEmittingOrder, linearScanOrder, context.lirGen); } - protected abstract void run(TargetDescription target, LIRGenerationResult lirGenRes, LIRGeneratorTool lirGen); + protected abstract void run(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder, LIRGeneratorTool lirGen); } diff -r 58f59bada2c1 -r edd93c34d015 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTierPhase.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTierPhase.java Mon Feb 09 11:10:00 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelLowTierPhase.java Mon Feb 09 11:23:13 2015 +0100 @@ -28,21 +28,14 @@ import com.oracle.graal.compiler.common.cfg.*; import com.oracle.graal.lir.gen.*; -public abstract class LowLevelLowTierPhase> extends LowLevelPhase> { +public abstract class LowLevelLowTierPhase> extends LowLevelPhase { - public static final class Context> { - final List codeEmittingOrder; - final List linearScanOrder; - - public Context(List codeEmittingOrder, List linearScanOrder) { - this.codeEmittingOrder = codeEmittingOrder; - this.linearScanOrder = linearScanOrder; - } + public static final class Context { } @Override - protected void run(TargetDescription target, LIRGenerationResult lirGenRes, Context context) { - run(target, lirGenRes, context.codeEmittingOrder, context.linearScanOrder); + protected final void run(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder, Context context) { + run(target, lirGenRes, codeEmittingOrder, linearScanOrder); } protected abstract void run(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder); diff -r 58f59bada2c1 -r edd93c34d015 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelMidTierPhase.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelMidTierPhase.java Mon Feb 09 11:10:00 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelMidTierPhase.java Mon Feb 09 11:23:13 2015 +0100 @@ -28,21 +28,14 @@ import com.oracle.graal.compiler.common.cfg.*; import com.oracle.graal.lir.gen.*; -public abstract class LowLevelMidTierPhase> extends LowLevelPhase> { +public abstract class LowLevelMidTierPhase> extends LowLevelPhase { - public static final class Context> { - final List codeEmittingOrder; - final List linearScanOrder; - - public Context(List codeEmittingOrder, List linearScanOrder) { - this.codeEmittingOrder = codeEmittingOrder; - this.linearScanOrder = linearScanOrder; - } + public static final class Context { } @Override - protected void run(TargetDescription target, LIRGenerationResult lirGenRes, Context context) { - run(target, lirGenRes, context.codeEmittingOrder, context.linearScanOrder); + protected void run(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder, Context context) { + run(target, lirGenRes, codeEmittingOrder, linearScanOrder); } protected abstract void run(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder); diff -r 58f59bada2c1 -r edd93c34d015 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelPhase.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelPhase.java Mon Feb 09 11:10:00 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/phases/LowLevelPhase.java Mon Feb 09 11:23:13 2015 +0100 @@ -22,7 +22,10 @@ */ package com.oracle.graal.lir.phases; +import java.util.*; + import com.oracle.graal.api.code.*; +import com.oracle.graal.compiler.common.cfg.*; import com.oracle.graal.debug.*; import com.oracle.graal.debug.Debug.Scope; import com.oracle.graal.debug.DebugMemUseTracker.Closeable; @@ -34,7 +37,7 @@ * Base class for all {@link LIR low-level} phases. Subclasses should be stateless. There will be * one global instance for each phase that is shared for all compilations. */ -public abstract class LowLevelPhase { +public abstract class LowLevelPhase> { private static final int PHASE_DUMP_LEVEL = 2; @@ -55,13 +58,13 @@ memUseTracker = Debug.memUseTracker("LowLevelPhaseMemUse_%s", getName()); } - public final void apply(TargetDescription target, LIRGenerationResult lirGenRes, C context) { - apply(target, lirGenRes, context, true); + public final void apply(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder, C context) { + apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, context, true); } - public final void apply(TargetDescription target, LIRGenerationResult lirGenRes, C context, boolean dumpLIR) { + public final void apply(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder, C context, boolean dumpLIR) { try (TimerCloseable a = timer.start(); Scope s = Debug.scope(getName(), this); Closeable c = memUseTracker.start()) { - run(target, lirGenRes, context); + run(target, lirGenRes, codeEmittingOrder, linearScanOrder, context); if (dumpLIR && Debug.isDumpEnabled(PHASE_DUMP_LEVEL)) { Debug.dump(PHASE_DUMP_LEVEL, lirGenRes.getLIR(), "After phase %s", getName()); } @@ -70,7 +73,7 @@ } } - protected abstract void run(TargetDescription target, LIRGenerationResult lirGenRes, C context); + protected abstract void run(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder, C context); protected CharSequence createName() { String className = LowLevelPhase.this.getClass().getName();