changeset 18204:a1873eefea65

Truffle: refactor TraceTrufflePerformanceWarnings into separate class.
author Christian Humer <christian.humer@gmail.com>
date Mon, 27 Oct 2014 17:07:51 +0100
parents b1607c3ebe4f
children 7f63e7683ee7
files graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTargetLog.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/AbstractDebugCompilationListener.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceCompilationListener.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TracePerformanceWarningsListener.java
diffstat 8 files changed, 44 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java	Mon Oct 27 15:40:31 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java	Mon Oct 27 17:07:51 2014 +0100
@@ -61,6 +61,7 @@
         TraceCompilationListener.install(this);
         TraceCompilationPolymorphismListener.install(this);
         TraceCompilationCallTreeListener.install(this);
+        TracePerformanceWarningsListener.install(this);
         TraceInliningListener.install(this);
         PrintCallTargetProfiling.install(this);
     }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java	Mon Oct 27 15:40:31 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java	Mon Oct 27 17:07:51 2014 +0100
@@ -22,7 +22,6 @@
  */
 package com.oracle.graal.truffle;
 
-import static com.oracle.graal.truffle.OptimizedCallTargetLog.*;
 import static com.oracle.graal.truffle.TruffleCompilerOptions.*;
 
 import java.io.*;
@@ -34,6 +33,7 @@
 import com.oracle.graal.api.code.*;
 import com.oracle.graal.compiler.common.*;
 import com.oracle.graal.debug.*;
+import com.oracle.graal.truffle.debug.*;
 import com.oracle.truffle.api.*;
 import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
 import com.oracle.truffle.api.frame.*;
@@ -451,7 +451,7 @@
 
     public Map<String, Object> getDebugProperties() {
         Map<String, Object> properties = new LinkedHashMap<>();
-        addASTSizeProperty(this, properties);
+        AbstractDebugCompilationListener.addASTSizeProperty(this, properties);
         properties.putAll(getCompilationProfile().getDebugProperties());
         return properties;
     }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTargetLog.java	Mon Oct 27 15:40:31 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTargetLog.java	Mon Oct 27 17:07:51 2014 +0100
@@ -59,10 +59,6 @@
 
     }
 
-    public static void logPerformanceWarning(String details, Map<String, Object> properties) {
-        log(0, "perf warn", details, properties);
-    }
-
     static void log(int indent, String msg, String details, Map<String, Object> properties) {
         StringBuilder sb = new StringBuilder();
         sb.append(String.format("[truffle] %-16s ", msg));
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java	Mon Oct 27 15:40:31 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java	Mon Oct 27 17:07:51 2014 +0100
@@ -23,7 +23,6 @@
 package com.oracle.graal.truffle;
 
 import static com.oracle.graal.compiler.common.GraalOptions.*;
-import static com.oracle.graal.truffle.OptimizedCallTargetLog.*;
 import static com.oracle.graal.truffle.TruffleCompilerOptions.*;
 
 import java.util.*;
@@ -51,6 +50,7 @@
 import com.oracle.graal.phases.common.inlining.info.*;
 import com.oracle.graal.phases.tiers.*;
 import com.oracle.graal.phases.util.*;
+import com.oracle.graal.truffle.debug.*;
 import com.oracle.graal.truffle.nodes.*;
 import com.oracle.graal.truffle.nodes.asserts.*;
 import com.oracle.graal.truffle.nodes.frame.*;
@@ -373,7 +373,7 @@
             if (TruffleCompilerOptions.TraceTrufflePerformanceWarnings.getValue()) {
                 Map<String, Object> properties = new LinkedHashMap<>();
                 properties.put("callNode", callNode);
-                logPerformanceWarning("A direct call within the Truffle AST is not reachable anymore. Call node could not be inlined.", properties);
+                TracePerformanceWarningsListener.logPerformanceWarning("A direct call within the Truffle AST is not reachable anymore. Call node could not be inlined.", properties);
             }
         }
 
@@ -382,7 +382,7 @@
                 Map<String, Object> properties = new LinkedHashMap<>();
                 properties.put("originalTarget", decision.getTarget());
                 properties.put("callNode", callNode);
-                logPerformanceWarning(String.format("CallTarget changed during compilation. Call node could not be inlined."), properties);
+                TracePerformanceWarningsListener.logPerformanceWarning(String.format("CallTarget changed during compilation. Call node could not be inlined."), properties);
             }
             decision = null;
         }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java	Mon Oct 27 15:40:31 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java	Mon Oct 27 17:07:51 2014 +0100
@@ -44,6 +44,7 @@
 import com.oracle.graal.phases.common.inlining.*;
 import com.oracle.graal.phases.tiers.*;
 import com.oracle.graal.phases.util.*;
+import com.oracle.graal.truffle.debug.*;
 import com.oracle.graal.truffle.phases.*;
 import com.oracle.graal.virtual.phases.ea.*;
 import com.oracle.truffle.api.*;
@@ -209,7 +210,7 @@
                     Map<String, Object> map = new LinkedHashMap<>();
                     map.put("nodeCount", graph.getNodeCount());
                     map.put("method", method.toString());
-                    OptimizedCallTargetLog.logPerformanceWarning(String.format("Method on fast path contains more than %d graal nodes.", warnNodeCount), map);
+                    TracePerformanceWarningsListener.logPerformanceWarning(String.format("Method on fast path contains more than %d graal nodes.", warnNodeCount), map);
                 }
             }
 
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/AbstractDebugCompilationListener.java	Mon Oct 27 15:40:31 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/AbstractDebugCompilationListener.java	Mon Oct 27 17:07:51 2014 +0100
@@ -37,7 +37,7 @@
     public void notifyShutdown(TruffleRuntime runtime) {
     }
 
-    protected static void log(int indent, String msg, String details, Map<String, Object> properties) {
+    public static void log(int indent, String msg, String details, Map<String, Object> properties) {
         StringBuilder sb = new StringBuilder();
         sb.append(String.format("[truffle] %-16s ", msg));
         for (int i = 0; i < indent; i++) {
@@ -69,7 +69,7 @@
         OUT.println(sb.toString());
     }
 
-    protected static void addASTSizeProperty(OptimizedCallTarget target, Map<String, Object> properties) {
+    public static void addASTSizeProperty(OptimizedCallTarget target, Map<String, Object> properties) {
         int nodeCount = OptimizedCallUtils.countNonTrivialNodes(target, false);
         int deepNodeCount = nodeCount;
         TruffleInlining inlining = target.getInlining();
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceCompilationListener.java	Mon Oct 27 15:40:31 2014 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceCompilationListener.java	Mon Oct 27 17:07:51 2014 +0100
@@ -85,7 +85,7 @@
 
         int dispatchedCalls = calls - inlinedCalls;
         Map<String, Object> properties = new LinkedHashMap<>();
-        OptimizedCallTargetLog.addASTSizeProperty(target, properties);
+        addASTSizeProperty(target, properties);
         properties.put("Time", String.format("%5.0f(%4.0f+%-4.0f)ms", //
                         (timeCompilationFinished - compilation.timeCompilationStarted) / 1e6, //
                         (compilation.timePartialEvaluationFinished - compilation.timeCompilationStarted) / 1e6, //
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TracePerformanceWarningsListener.java	Mon Oct 27 17:07:51 2014 +0100
@@ -0,0 +1,33 @@
+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 TracePerformanceWarningsListener extends AbstractDebugCompilationListener {
+
+    private TracePerformanceWarningsListener() {
+    }
+
+    public static void install(GraalTruffleRuntime runtime) {
+        if (isEnabled()) {
+            runtime.addCompilationListener(new TracePerformanceWarningsListener());
+        }
+    }
+
+    @Override
+    public void notifyCompilationTruffleTierFinished(OptimizedCallTarget target, StructuredGraph graph) {
+    }
+
+    public static boolean isEnabled() {
+        return TraceTrufflePerformanceWarnings.getValue();
+    }
+
+    public static void logPerformanceWarning(String details, Map<String, Object> properties) {
+        log(0, "perf warn", details, properties);
+    }
+
+}