# HG changeset patch # User Josef Eisl # Date 1448888804 -3600 # Node ID c8f3095d4345b8161aa4e030f8a1d3458c350a84 # Parent 8aecb496a8be2f4c69d8493934ee1b5db859417d TraceRA: add TraceBuilderResult to TraceAllocationContext. diff -r 8aecb496a8be -r c8f3095d4345 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceAllocationPhase.java --- 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; } } diff -r 8aecb496a8be -r c8f3095d4345 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceGlobalMoveResolutionPhase.java --- 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 > void run(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List linearScanOrder, TraceAllocationContext context) { MoveFactory spillMoveFactory = context.spillMoveFactory; - resolveGlobalDataFlow(resultTraces, lirGenRes, spillMoveFactory, target.arch); + resolveGlobalDataFlow(context.resultTraces, lirGenRes, spillMoveFactory, target.arch); } @SuppressWarnings("try") diff -r 8aecb496a8be -r c8f3095d4345 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceRegisterAllocationPhase.java --- 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 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); } diff -r 8aecb496a8be -r c8f3095d4345 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceTrivialAllocator.java --- 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 > void run(TargetDescription target, LIRGenerationResult lirGenRes, List codeEmittingOrder, List 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();