Mercurial > hg > graal-compiler
changeset 23118:c8f3095d4345
TraceRA: add TraceBuilderResult to TraceAllocationContext.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Mon, 30 Nov 2015 14:06:44 +0100 |
parents | 8aecb496a8be |
children | 4128cb7a8fed |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceAllocationPhase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceGlobalMoveResolutionPhase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceRegisterAllocationPhase.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceTrivialAllocator.java |
diffstat | 4 files changed, 9 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceAllocationPhase.java Mon Nov 30 11:23:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceAllocationPhase.java Mon Nov 30 14:06:44 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.lir.alloc.trace; import com.oracle.graal.compiler.common.alloc.RegisterAllocationConfig; +import com.oracle.graal.compiler.common.alloc.TraceBuilder.TraceBuilderResult; import com.oracle.graal.lir.gen.LIRGeneratorTool.MoveFactory; import com.oracle.graal.lir.phases.LIRPhase; @@ -31,10 +32,12 @@ public static final class TraceAllocationContext { public final MoveFactory spillMoveFactory; public final RegisterAllocationConfig registerAllocationConfig; + public final TraceBuilderResult<?> resultTraces; - public TraceAllocationContext(MoveFactory spillMoveFactory, RegisterAllocationConfig registerAllocationConfig) { + public TraceAllocationContext(MoveFactory spillMoveFactory, RegisterAllocationConfig registerAllocationConfig, TraceBuilderResult<?> resultTraces) { this.spillMoveFactory = spillMoveFactory; this.registerAllocationConfig = registerAllocationConfig; + this.resultTraces = resultTraces; } }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceGlobalMoveResolutionPhase.java Mon Nov 30 11:23:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceGlobalMoveResolutionPhase.java Mon Nov 30 14:06:44 2015 +0100 @@ -57,16 +57,10 @@ public abstract void addMapping(Value src, AllocatableValue dst); } - private final TraceBuilderResult<?> resultTraces; - - public TraceGlobalMoveResolutionPhase(TraceBuilderResult<?> resultTraces) { - this.resultTraces = resultTraces; - } - @Override protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, TraceAllocationContext context) { MoveFactory spillMoveFactory = context.spillMoveFactory; - resolveGlobalDataFlow(resultTraces, lirGenRes, spillMoveFactory, target.arch); + resolveGlobalDataFlow(context.resultTraces, lirGenRes, spillMoveFactory, target.arch); } @SuppressWarnings("try")
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceRegisterAllocationPhase.java Mon Nov 30 11:23:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceRegisterAllocationPhase.java Mon Nov 30 14:06:44 2015 +0100 @@ -80,8 +80,7 @@ TraceBuilderResult<B> resultTraces = TraceBuilder.computeTraces(startBlock, linearScanOrder); TraceStatisticsPrinter.printTraceStatistics(resultTraces, lirGenRes.getCompilationUnitName()); - // TODO (je) merge with AllocationContex - TraceAllocationContext traceContext = new TraceAllocationContext(spillMoveFactory, registerAllocationConfig); + TraceAllocationContext traceContext = new TraceAllocationContext(spillMoveFactory, registerAllocationConfig, resultTraces); Debug.dump(lir, "Before TraceRegisterAllocation"); int traceNumber = 0; @@ -93,7 +92,7 @@ } Debug.dump(TRACE_DUMP_LEVEL, trace, "Trace" + traceNumber + ": " + trace); if (Options.TraceRAtrivialBlockAllocator.getValue() && isTrivialTrace(lir, trace)) { - new TraceTrivialAllocator(resultTraces).apply(target, lirGenRes, codeEmittingOrder, trace, traceContext, false); + new TraceTrivialAllocator().apply(target, lirGenRes, codeEmittingOrder, trace, traceContext, false); } else { TraceLinearScan allocator = new TraceLinearScan(target, lirGenRes, spillMoveFactory, registerAllocationConfig, trace, resultTraces, false); allocator.allocate(target, lirGenRes, codeEmittingOrder, linearScanOrder, spillMoveFactory, registerAllocationConfig); @@ -107,7 +106,7 @@ } Debug.dump(lir, "After trace allocation"); - new TraceGlobalMoveResolutionPhase(resultTraces).apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, traceContext); + new TraceGlobalMoveResolutionPhase().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, traceContext); new TraceRegisterAllocationFixupPhase().apply(target, lirGenRes, codeEmittingOrder, linearScanOrder, traceContext); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceTrivialAllocator.java Mon Nov 30 11:23:16 2015 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceTrivialAllocator.java Mon Nov 30 14:06:44 2015 +0100 @@ -50,15 +50,10 @@ */ final class TraceTrivialAllocator extends TraceAllocationPhase { - private final TraceBuilderResult<?> resultTraces; - - public TraceTrivialAllocator(TraceBuilderResult<?> resultTraces) { - this.resultTraces = resultTraces; - } - @Override protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> trace, TraceAllocationContext context) { LIR lir = lirGenRes.getLIR(); + TraceBuilderResult<?> resultTraces = context.resultTraces; assert isTrivialTrace(lir, trace) : "Not a trivial trace! " + trace; B block = trace.iterator().next();