Mercurial > hg > truffle
diff graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/alloc/LinearScan.java @ 4353:043bec543161
More work on debug framework. Removed concept of GraalContext.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Tue, 17 Jan 2012 23:35:21 +0100 |
parents | 5a84f5548fc4 |
children | 249752adcb8d |
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/alloc/LinearScan.java Mon Jan 16 18:49:12 2012 +0100 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/alloc/LinearScan.java Tue Jan 17 23:35:21 2012 +0100 @@ -41,6 +41,7 @@ import com.oracle.max.graal.compiler.lir.LIRInstruction.OperandMode; import com.oracle.max.graal.compiler.lir.LIRInstruction.ValueProcedure; import com.oracle.max.graal.compiler.util.*; +import com.oracle.max.graal.debug.*; import com.oracle.max.graal.graph.*; import com.oracle.max.graal.nodes.*; @@ -51,7 +52,6 @@ */ public final class LinearScan { - final GraalContext context; final CiTarget target; final RiMethod method; final LIR ir; @@ -122,8 +122,7 @@ private final StructuredGraph graph; - public LinearScan(GraalContext context, CiTarget target, RiResolvedMethod method, StructuredGraph graph, LIR ir, LIRGenerator gen, FrameMap frameMap) { - this.context = context; + public LinearScan(CiTarget target, RiResolvedMethod method, StructuredGraph graph, LIR ir, LIRGenerator gen, FrameMap frameMap) { this.target = target; this.method = method; this.graph = graph; @@ -1786,8 +1785,15 @@ } } + private static final Debug.Timer timerLifetimeAnalysis = Debug.timer("LifetimeAnalysis"); + private static final Debug.Timer timerLinearScan = Debug.timer("LinearScan"); + private static final Debug.Timer timerLinearScanResolution = Debug.timer("LinearScanResolution"); + private static final Debug.Timer timerDebugInfo = Debug.timer("DebugInfo"); + private static final Debug.Timer timerControlFlowOptimizations = Debug.timer("ControlFlowOptimizations"); + public void allocate() { - context.timers.startScope("Lifetime Analysis"); + + timerLifetimeAnalysis.start(); try { numberInstructions(); @@ -1799,27 +1805,27 @@ buildIntervals(); sortIntervalsBeforeAllocation(); } finally { - context.timers.endScope(); + timerLifetimeAnalysis.stop(); } - context.timers.startScope("Linear Scan"); + timerLinearScan.start(); try { printIntervals("Before register allocation"); allocateRegisters(); } finally { - context.timers.endScope(); + timerLinearScan.stop(); } - context.timers.startScope("Resolution"); + timerLinearScanResolution.start(); try { resolveDataFlow(); } finally { - context.timers.endScope(); + timerLinearScanResolution.stop(); } - context.timers.startScope("Create Debug Info"); + timerDebugInfo.start(); try { frameMap.finish(); @@ -1839,17 +1845,17 @@ verifyIntervals(); } } finally { - context.timers.endScope(); + timerDebugInfo.stop(); } - context.timers.startScope("Control Flow Optimizations"); + timerControlFlowOptimizations.start(); try { printLir("After register number assignment", true); EdgeMoveOptimizer.optimize(ir.linearScanOrder()); ControlFlowOptimizer.optimize(ir); printLir("After control flow optimization", false); } finally { - context.timers.endScope(); + timerControlFlowOptimizations.stop(); } } @@ -1875,9 +1881,7 @@ TTY.println(); } - if (context.isObserved()) { - context.observable.fireCompilationEvent(label, graph, this, Arrays.copyOf(intervals, intervalsSize)); - } + Debug.dump(Arrays.copyOf(intervals, intervalsSize), label); } void printLir(String label, boolean hirValid) { @@ -1888,9 +1892,7 @@ TTY.println(); } - if (context.isObserved()) { - context.observable.fireCompilationEvent(label, hirValid ? graph : null, ir); - } + Debug.dump(ir, label); } boolean verify() {