# HG changeset patch # User Andreas Woess # Date 1371998117 -7200 # Node ID 77016aeda39a8b0b740ae24f252cf0c3be468534 # Parent e5dae076b4679ee8c52d9f432be7c6ed820c5512 TraceTruffleCompilation: output truffle and graal node counts diff -r e5dae076b467 -r 77016aeda39a graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java Sun Jun 23 14:42:15 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallTarget.java Sun Jun 23 16:35:17 2013 +0200 @@ -66,6 +66,8 @@ long timePartialEvaluationFinished; long timeCompilationFinished; int codeSize; + int nodeCountPartialEval; + int nodeCountLowered; @Override public Object call(PackedFrame caller, Arguments args) { @@ -80,7 +82,7 @@ originalInvokeCounter += invalidationReprofileCount; } if (TraceTruffleCompilation.getValue()) { - OUT.printf("[truffle] invalidated %-48s |Alive %4.0fms\n", rootNode, (System.nanoTime() - timeCompilationFinished) / 1e6); + OUT.printf("[truffle] invalidated %-48s |Alive %5.0fms\n", rootNode, (System.nanoTime() - timeCompilationFinished) / 1e6); } } } else { @@ -116,8 +118,10 @@ throw new BailoutException(String.format("code installation failed (codeSize=%s)", codeSize)); } else { if (TraceTruffleCompilation.getValue()) { - OUT.printf("[truffle] optimized %-50s |Total %5.0fms |PE %4.0fms |Graal %4.0fms |CodeSize %d\n", rootNode, (timeCompilationFinished - timeCompilationStarted) / 1e6, - (timePartialEvaluationFinished - timeCompilationStarted) / 1e6, (timeCompilationFinished - timePartialEvaluationFinished) / 1e6, codeSize); + int nodeCountTruffle = new InliningHelper.CallTargetProfile(rootNode).nodeCount; + OUT.printf("[truffle] optimized %-50s |Nodes %7d |Time %5.0f(%4.0f+%-4.0f)ms |Nodes %5d/%5d |CodeSize %d\n", rootNode, nodeCountTruffle, + (timeCompilationFinished - timeCompilationStarted) / 1e6, (timePartialEvaluationFinished - timeCompilationStarted) / 1e6, + (timeCompilationFinished - timePartialEvaluationFinished) / 1e6, nodeCountPartialEval, nodeCountLowered, codeSize); } } } catch (Throwable e) { @@ -165,7 +169,7 @@ loopAndInvokeCounter -= count; } - private class InliningHelper { + private static class InliningHelper { private static final int MAX_SIZE = 300; private static final int MAX_INLINE_SIZE = 62; @@ -201,7 +205,7 @@ } ProfiledInlinableCallSite inlinable = new ProfiledInlinableCallSite(inlineProfile, callSite); - double metric = (inlinable.callCount / inlineProfile.nodeCount) + ((double) inlinable.callCount / (double) originalInvokeCounter); + double metric = (inlinable.callCount / inlineProfile.nodeCount) + ((double) inlinable.callCount / (double) target.originalInvokeCounter); if (metric >= max) { inliningDecision = inlinable; max = metric; @@ -216,7 +220,7 @@ if (inliningDecision.callSite.inline(target)) { if (TraceTruffleCompilation.getValue()) { - String calls = String.format("%4s/%4s", inliningDecision.callCount, originalInvokeCounter); + String calls = String.format("%4s/%4s", inliningDecision.callCount, target.originalInvokeCounter); String nodes = String.format("%3s/%3s", inliningDecision.profile.nodeCount, profile.nodeCount); OUT.printf("[truffle] inlined %-50s |Nodes %6s |Calls %6s |into %s\n", inliningDecision.callSite, nodes, calls, target.getRootNode()); @@ -227,7 +231,7 @@ return false; } - private class ProfiledInlinableCallSite { + private static class ProfiledInlinableCallSite { final CallTargetProfile profile; final InlinableCallSite callSite; @@ -238,10 +242,9 @@ this.callSite = callSite; this.callCount = callSite.getCallCount(); } - } - private class CallTargetProfile { + private static class CallTargetProfile { final Node root; final int nodeCount; diff -r e5dae076b467 -r 77016aeda39a 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 Sun Jun 23 14:42:15 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Sun Jun 23 16:35:17 2013 +0200 @@ -112,8 +112,10 @@ Assumptions assumptions = new Assumptions(true); graph = nodeCompiler.createGraph(compilable, assumptions); compilable.timePartialEvaluationFinished = System.nanoTime(); + compilable.nodeCountPartialEval = graph.getNodeCount(); InstalledCode compiledMethod = compileMethodHelper(graph, config, compilable, assumptions); compilable.timeCompilationFinished = System.nanoTime(); + compilable.nodeCountLowered = graph.getNodeCount(); return compiledMethod; }