changeset 18202:b3f6b210f723

Truffle: refactor TraceTruffleInlining into a separte class.
author Christian Humer <christian.humer@gmail.com>
date Mon, 27 Oct 2014 15:30:53 +0100
parents ae3b7695f0fb
children b1607c3ebe4f
files graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTargetLog.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceInliningListener.java
diffstat 4 files changed, 54 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java	Mon Oct 27 15:18:14 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java	Mon Oct 27 15:30:53 2014 +0100
@@ -60,6 +60,7 @@
         TraceCompilationFailureListener.install(this);
         TraceCompilationListener.install(this);
         TraceCompilationPolymorphismListener.install(this);
+        TraceInliningListener.install(this);
         PrintCallTargetProfiling.install(this);
     }
 
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTargetLog.java	Mon Oct 27 15:18:14 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTargetLog.java	Mon Oct 27 15:30:53 2014 +0100
@@ -38,29 +38,6 @@
     private OptimizedCallTargetLog() {
     }
 
-    public static void logInliningDecision(OptimizedCallTarget target) {
-        TruffleInlining inlining = target.getInlining();
-        if (inlining == null) {
-            return;
-        }
-
-        logInliningStart(target);
-        logInliningDecisionRecursive(inlining, 1);
-        logInliningDone(target);
-    }
-
-    private static void logInliningDecisionRecursive(TruffleInlining result, int depth) {
-        for (TruffleInliningDecision decision : result) {
-            TruffleInliningProfile profile = decision.getProfile();
-            boolean inlined = decision.isInline();
-            String msg = inlined ? "inline success" : "inline failed";
-            logInlinedImpl(msg, decision.getProfile().getCallNode(), profile, depth);
-            if (inlined) {
-                logInliningDecisionRecursive(decision, depth + 1);
-            }
-        }
-    }
-
     public static void logTruffleCallTree(OptimizedCallTarget compilable) {
         CallTreeNodeVisitor visitor = new CallTreeNodeVisitor() {
 
@@ -95,26 +72,6 @@
         }
     }
 
-    private static void logInlinedImpl(String status, OptimizedDirectCallNode callNode, TruffleInliningProfile profile, int depth) {
-        Map<String, Object> properties = new LinkedHashMap<>();
-        if (profile != null) {
-            properties.putAll(profile.getDebugProperties());
-        }
-        log((depth * 2), status, callNode.getCurrentCallTarget().toString(), properties);
-    }
-
-    private static void logInliningStart(OptimizedCallTarget target) {
-        if (TraceTruffleInlining.getValue()) {
-            log(0, "inline start", target.toString(), target.getDebugProperties());
-        }
-    }
-
-    private static void logInliningDone(OptimizedCallTarget target) {
-        if (TraceTruffleInlining.getValue()) {
-            log(0, "inline done", target.toString(), target.getDebugProperties());
-        }
-    }
-
     private static int splitCount = 0;
 
     static void logSplit(OptimizedDirectCallNode callNode, OptimizedCallTarget target, OptimizedCallTarget newTarget) {
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java	Mon Oct 27 15:18:14 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java	Mon Oct 27 15:30:53 2014 +0100
@@ -133,9 +133,6 @@
                 OptimizedCallTargetLog.log(0, "opt call tree", compilable.toString(), compilable.getDebugProperties());
                 OptimizedCallTargetLog.logTruffleCallTree(compilable);
             }
-            if (TraceTruffleInlining.getValue()) {
-                OptimizedCallTargetLog.logInliningDecision(compilable);
-            }
             compilationNotify.notifyCompilationSuccess(compilable, graph, compilationResult);
         } catch (Throwable t) {
             compilationNotify.notifyCompilationFailed(compilable, graph, t);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceInliningListener.java	Mon Oct 27 15:30:53 2014 +0100
@@ -0,0 +1,53 @@
+package com.oracle.graal.truffle.debug;
+
+import static com.oracle.graal.truffle.TruffleCompilerOptions.*;
+
+import java.util.*;
+
+import com.oracle.graal.nodes.*;
+import com.oracle.graal.truffle.*;
+
+public class TraceInliningListener extends AbstractDebugCompilationListener {
+
+    private TraceInliningListener() {
+    }
+
+    public static void install(GraalTruffleRuntime runtime) {
+        if (TraceTruffleInlining.getValue()) {
+            runtime.addCompilationListener(new TraceInliningListener());
+        }
+    }
+
+    @Override
+    public void notifyCompilationTruffleTierFinished(OptimizedCallTarget target, StructuredGraph graph) {
+        TruffleInlining inlining = target.getInlining();
+        if (inlining == null) {
+            return;
+        }
+
+        log(0, "inline start", target.toString(), target.getDebugProperties());
+        logInliningDecisionRecursive(inlining, 1);
+        log(0, "inline done", target.toString(), target.getDebugProperties());
+    }
+
+    private static void logInliningDecisionRecursive(TruffleInlining result, int depth) {
+        for (TruffleInliningDecision decision : result) {
+            TruffleInliningProfile profile = decision.getProfile();
+            boolean inlined = decision.isInline();
+            String msg = inlined ? "inline success" : "inline failed";
+            logInlinedImpl(msg, decision.getProfile().getCallNode(), profile, depth);
+            if (inlined) {
+                logInliningDecisionRecursive(decision, depth + 1);
+            }
+        }
+    }
+
+    private static void logInlinedImpl(String status, OptimizedDirectCallNode callNode, TruffleInliningProfile profile, int depth) {
+        Map<String, Object> properties = new LinkedHashMap<>();
+        if (profile != null) {
+            properties.putAll(profile.getDebugProperties());
+        }
+        log((depth * 2), status, callNode.getCurrentCallTarget().toString(), properties);
+    }
+
+}