# HG changeset patch # User Christian Humer # Date 1414420253 -3600 # Node ID b3f6b210f723c1b86245c00cc7e11001f42c7f6e # Parent ae3b7695f0fbdc923c7c1b13cb43537c833428f2 Truffle: refactor TraceTruffleInlining into a separte class. diff -r ae3b7695f0fb -r b3f6b210f723 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java --- 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); } diff -r ae3b7695f0fb -r b3f6b210f723 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTargetLog.java --- 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 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) { diff -r ae3b7695f0fb -r b3f6b210f723 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java --- 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); diff -r ae3b7695f0fb -r b3f6b210f723 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/debug/TraceInliningListener.java --- /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 properties = new LinkedHashMap<>(); + if (profile != null) { + properties.putAll(profile.getDebugProperties()); + } + log((depth * 2), status, callNode.getCurrentCallTarget().toString(), properties); + } + +}