changeset 23030:183221119491

TraceRA: add timer and memory tracker to TraceBuilder.
author Josef Eisl <josef.eisl@jku.at>
date Thu, 19 Nov 2015 17:20:38 +0100
parents ccfa6d4d989b
children 2c730119cb92
files graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/TraceBuilder.java
diffstat 1 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/TraceBuilder.java	Thu Nov 19 16:51:23 2015 +0100
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/TraceBuilder.java	Thu Nov 19 17:20:38 2015 +0100
@@ -30,6 +30,9 @@
 import com.oracle.graal.compiler.common.cfg.AbstractBlockBase;
 import com.oracle.graal.debug.Debug;
 import com.oracle.graal.debug.Debug.Scope;
+import com.oracle.graal.debug.DebugCloseable;
+import com.oracle.graal.debug.DebugMemUseTracker;
+import com.oracle.graal.debug.DebugTimer;
 import com.oracle.graal.debug.Indent;
 
 public final class TraceBuilder<T extends AbstractBlockBase<T>> {
@@ -63,11 +66,20 @@
 
     }
 
+    private static final String PHASE_NAME = "LIRPhaseTime_TraceBuilderPhase";
+    private static final DebugTimer timer = Debug.timer(PHASE_NAME);
+    private static final DebugMemUseTracker memUseTracker = Debug.memUseTracker(PHASE_NAME);
+
     /**
      * Build traces of sequentially executed blocks.
      */
+    @SuppressWarnings("try")
     public static <T extends AbstractBlockBase<T>> TraceBuilderResult<T> computeTraces(T startBlock, List<T> blocks) {
-        return new TraceBuilder<>(blocks).build(startBlock);
+        try (Scope s = Debug.scope("TraceBuilder")) {
+            try (DebugCloseable a = timer.start(); DebugCloseable c = memUseTracker.start()) {
+                return new TraceBuilder<>(blocks).build(startBlock);
+            }
+        }
     }
 
     private final PriorityQueue<T> worklist;
@@ -103,7 +115,7 @@
 
     @SuppressWarnings("try")
     private TraceBuilderResult<T> build(T startBlock) {
-        try (Scope s = Debug.scope("TraceBuilder"); Indent indent = Debug.logAndIndent("start trace building: " + startBlock)) {
+        try (Indent indent = Debug.logAndIndent("start trace building: " + startBlock)) {
             ArrayList<List<T>> traces = buildTraces(startBlock);
 
             assert verify(traces);