Mercurial > hg > graal-compiler
changeset 23120:f449414238e4
TraceRA: TraceLinearScanAllocationPhase: directly pass context to phases.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Mon, 30 Nov 2015 14:46:11 +0100 |
parents | 4128cb7a8fed |
children | d736437ef3df |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAllocationPhase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAssignLocationsPhase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanEliminateSpillMovePhase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanLifetimeAnalysisPhase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanRegisterAllocationPhase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanResolveDataFlowPhase.java |
diffstat | 6 files changed, 22 insertions(+), 42 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAllocationPhase.java Mon Nov 30 11:56:06 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAllocationPhase.java Mon Nov 30 14:46:11 2015 +0100 @@ -22,24 +22,18 @@ */ package com.oracle.graal.lir.alloc.trace; -import java.util.List; - -import jdk.vm.ci.code.TargetDescription; - import com.oracle.graal.compiler.common.alloc.RegisterAllocationConfig; import com.oracle.graal.compiler.common.alloc.TraceBuilder.TraceBuilderResult; -import com.oracle.graal.compiler.common.cfg.AbstractBlockBase; -import com.oracle.graal.lir.gen.LIRGenerationResult; import com.oracle.graal.lir.gen.LIRGeneratorTool.MoveFactory; import com.oracle.graal.lir.phases.LIRPhase; public abstract class TraceLinearScanAllocationPhase extends LIRPhase<TraceLinearScanAllocationPhase.TraceLinearScanAllocationContext> { public static final class TraceLinearScanAllocationContext { - private final MoveFactory spillMoveFactory; - private final RegisterAllocationConfig registerAllocationConfig; - private final TraceBuilderResult<?> traceBuilderResult; - private final TraceLinearScan allocator; + public final MoveFactory spillMoveFactory; + public final RegisterAllocationConfig registerAllocationConfig; + public final TraceBuilderResult<?> traceBuilderResult; + public final TraceLinearScan allocator; public TraceLinearScanAllocationContext(MoveFactory spillMoveFactory, RegisterAllocationConfig registerAllocationConfig, TraceBuilderResult<?> traceBuilderResult, TraceLinearScan allocator) { this.spillMoveFactory = spillMoveFactory; @@ -48,14 +42,4 @@ this.allocator = allocator; } } - - @Override - protected final <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, - TraceLinearScanAllocationContext context) { - run(target, lirGenRes, codeEmittingOrder, linearScanOrder, context.spillMoveFactory, context.registerAllocationConfig, context.traceBuilderResult, context.allocator); - } - - protected abstract <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, - MoveFactory spillMoveFactory, RegisterAllocationConfig registerAllocationConfig, TraceBuilderResult<?> traceBuilderResult, TraceLinearScan allocator); - }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAssignLocationsPhase.java Mon Nov 30 11:56:06 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanAssignLocationsPhase.java Mon Nov 30 14:46:11 2015 +0100 @@ -41,8 +41,6 @@ import jdk.vm.ci.meta.AllocatableValue; import jdk.vm.ci.meta.Value; -import com.oracle.graal.compiler.common.alloc.RegisterAllocationConfig; -import com.oracle.graal.compiler.common.alloc.TraceBuilder.TraceBuilderResult; import com.oracle.graal.compiler.common.cfg.AbstractBlockBase; import com.oracle.graal.debug.Debug; import com.oracle.graal.debug.Indent; @@ -59,7 +57,6 @@ import com.oracle.graal.lir.StandardOp.ValueMoveOp; import com.oracle.graal.lir.Variable; import com.oracle.graal.lir.gen.LIRGenerationResult; -import com.oracle.graal.lir.gen.LIRGeneratorTool.MoveFactory; /** * Specialization of {@link com.oracle.graal.lir.alloc.lsra.LinearScanAssignLocationsPhase} that @@ -69,8 +66,9 @@ final class TraceLinearScanAssignLocationsPhase extends TraceLinearScanAllocationPhase { @Override - protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, MoveFactory spillMoveFactory, - RegisterAllocationConfig registerAllocationConfig, TraceBuilderResult<?> traceBuilderResult, TraceLinearScan allocator) { + protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, + TraceLinearScanAllocationContext context) { + TraceLinearScan allocator = context.allocator; new Assigner(allocator).assignLocations(); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanEliminateSpillMovePhase.java Mon Nov 30 11:56:06 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanEliminateSpillMovePhase.java Mon Nov 30 14:46:11 2015 +0100 @@ -32,7 +32,6 @@ import jdk.vm.ci.code.TargetDescription; import jdk.vm.ci.meta.AllocatableValue; -import com.oracle.graal.compiler.common.alloc.RegisterAllocationConfig; import com.oracle.graal.compiler.common.alloc.TraceBuilder.TraceBuilderResult; import com.oracle.graal.compiler.common.cfg.AbstractBlockBase; import com.oracle.graal.debug.Debug; @@ -46,7 +45,6 @@ import com.oracle.graal.lir.alloc.trace.TraceInterval.SpillState; import com.oracle.graal.lir.alloc.trace.TraceLinearScan.IntervalPredicate; import com.oracle.graal.lir.gen.LIRGenerationResult; -import com.oracle.graal.lir.gen.LIRGeneratorTool.MoveFactory; final class TraceLinearScanEliminateSpillMovePhase extends TraceLinearScanAllocationPhase { @@ -59,8 +57,10 @@ }; @Override - protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, MoveFactory spillMoveFactory, - RegisterAllocationConfig registerAllocationConfig, TraceBuilderResult<?> traceBuilderResult, TraceLinearScan allocator) { + protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, + TraceLinearScanAllocationContext context) { + TraceBuilderResult<?> traceBuilderResult = context.traceBuilderResult; + TraceLinearScan allocator = context.allocator; boolean shouldEliminateSpillMoves = shouldEliminateSpillMoves(traceBuilderResult, allocator); eliminateSpillMoves(allocator, shouldEliminateSpillMoves, traceBuilderResult); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanLifetimeAnalysisPhase.java Mon Nov 30 11:56:06 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanLifetimeAnalysisPhase.java Mon Nov 30 14:46:11 2015 +0100 @@ -50,7 +50,6 @@ import jdk.vm.ci.meta.Value; import com.oracle.graal.compiler.common.alloc.ComputeBlockOrder; -import com.oracle.graal.compiler.common.alloc.RegisterAllocationConfig; import com.oracle.graal.compiler.common.alloc.TraceBuilder.TraceBuilderResult; import com.oracle.graal.compiler.common.cfg.AbstractBlockBase; import com.oracle.graal.debug.Debug; @@ -70,14 +69,15 @@ import com.oracle.graal.lir.alloc.trace.TraceInterval.RegisterPriority; import com.oracle.graal.lir.alloc.trace.TraceInterval.SpillState; import com.oracle.graal.lir.gen.LIRGenerationResult; -import com.oracle.graal.lir.gen.LIRGeneratorTool.MoveFactory; import com.oracle.graal.lir.ssi.SSIUtil; final class TraceLinearScanLifetimeAnalysisPhase extends TraceLinearScanAllocationPhase { @Override - protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, MoveFactory spillMoveFactory, - RegisterAllocationConfig registerAllocationConfig, TraceBuilderResult<?> traceBuilderResult, TraceLinearScan allocator) { + protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, + TraceLinearScanAllocationContext context) { + TraceBuilderResult<?> traceBuilderResult = context.traceBuilderResult; + TraceLinearScan allocator = context.allocator; new Analyser(allocator, traceBuilderResult).analyze(); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanRegisterAllocationPhase.java Mon Nov 30 11:56:06 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanRegisterAllocationPhase.java Mon Nov 30 14:46:11 2015 +0100 @@ -26,19 +26,17 @@ import jdk.vm.ci.code.TargetDescription; -import com.oracle.graal.compiler.common.alloc.RegisterAllocationConfig; -import com.oracle.graal.compiler.common.alloc.TraceBuilder.TraceBuilderResult; import com.oracle.graal.compiler.common.cfg.AbstractBlockBase; import com.oracle.graal.debug.Debug; import com.oracle.graal.debug.Indent; import com.oracle.graal.lir.gen.LIRGenerationResult; -import com.oracle.graal.lir.gen.LIRGeneratorTool.MoveFactory; final class TraceLinearScanRegisterAllocationPhase extends TraceLinearScanAllocationPhase { @Override - protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, MoveFactory spillMoveFactory, - RegisterAllocationConfig registerAllocationConfig, TraceBuilderResult<?> traceBuilderResult, TraceLinearScan allocator) { + protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, + TraceLinearScanAllocationContext context) { + TraceLinearScan allocator = context.allocator; allocator.printIntervals("Before register allocation"); allocateRegisters(allocator); allocator.printIntervals("After register allocation");
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanResolveDataFlowPhase.java Mon Nov 30 11:56:06 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanResolveDataFlowPhase.java Mon Nov 30 14:46:11 2015 +0100 @@ -36,7 +36,6 @@ import jdk.vm.ci.code.TargetDescription; import jdk.vm.ci.meta.Value; -import com.oracle.graal.compiler.common.alloc.RegisterAllocationConfig; import com.oracle.graal.compiler.common.alloc.TraceBuilder.TraceBuilderResult; import com.oracle.graal.compiler.common.cfg.AbstractBlockBase; import com.oracle.graal.debug.Debug; @@ -45,7 +44,6 @@ import com.oracle.graal.lir.LIRInstruction; import com.oracle.graal.lir.StandardOp; import com.oracle.graal.lir.gen.LIRGenerationResult; -import com.oracle.graal.lir.gen.LIRGeneratorTool.MoveFactory; import com.oracle.graal.lir.ssa.SSAUtil.PhiValueVisitor; import com.oracle.graal.lir.ssi.SSIUtil; @@ -57,8 +55,10 @@ final class TraceLinearScanResolveDataFlowPhase extends TraceLinearScanAllocationPhase { @Override - protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, MoveFactory spillMoveFactory, - RegisterAllocationConfig registerAllocationConfig, TraceBuilderResult<?> traceBuilderResult, TraceLinearScan allocator) { + protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, + TraceLinearScanAllocationContext context) { + TraceBuilderResult<?> traceBuilderResult = context.traceBuilderResult; + TraceLinearScan allocator = context.allocator; new Resolver(allocator, traceBuilderResult).resolveDataFlow(allocator.sortedBlocks()); }