Search in sources :

Example 1 with CallTreeNodeVisitor

use of org.graalvm.compiler.truffle.runtime.TruffleInlining.CallTreeNodeVisitor in project graal by oracle.

the class TraceCallTreeListener method logTruffleCallTree.

private void logTruffleCallTree(OptimizedCallTarget compilable, TruffleInlining inliningDecision) {
    CallTreeNodeVisitor visitor = new CallTreeNodeVisitor() {

        @Override
        public boolean visit(List<TruffleInlining> decisionStack, Node node) {
            if (node instanceof OptimizedDirectCallNode) {
                OptimizedDirectCallNode callNode = ((OptimizedDirectCallNode) node);
                int depth = decisionStack == null ? 0 : decisionStack.size() - 1;
                TruffleInliningDecision inlining = CallTreeNodeVisitor.getCurrentInliningDecision(decisionStack);
                String dispatched = "<dispatched>";
                if (inlining != null && inlining.shouldInline()) {
                    dispatched = "";
                }
                Map<String, Object> properties = new LinkedHashMap<>();
                GraalTruffleRuntimeListener.addASTSizeProperty(callNode.getCurrentCallTarget(), inliningDecision, properties);
                properties.putAll(callNode.getCurrentCallTarget().getDebugProperties(inliningDecision));
                runtime.logEvent(depth, "opt call tree", callNode.getCurrentCallTarget().toString() + dispatched, properties);
            } else if (node instanceof OptimizedIndirectCallNode) {
                int depth = decisionStack == null ? 0 : decisionStack.size() - 1;
                runtime.logEvent(depth, "opt call tree", "<indirect>", new LinkedHashMap<>());
            }
            return true;
        }
    };
    compilable.accept(visitor, inliningDecision);
}
Also used : TruffleInliningDecision(org.graalvm.compiler.truffle.runtime.TruffleInliningDecision) OptimizedIndirectCallNode(org.graalvm.compiler.truffle.runtime.OptimizedIndirectCallNode) Node(com.oracle.truffle.api.nodes.Node) OptimizedIndirectCallNode(org.graalvm.compiler.truffle.runtime.OptimizedIndirectCallNode) OptimizedDirectCallNode(org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode) List(java.util.List) OptimizedDirectCallNode(org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode) CallTreeNodeVisitor(org.graalvm.compiler.truffle.runtime.TruffleInlining.CallTreeNodeVisitor) LinkedHashMap(java.util.LinkedHashMap)

Aggregations

Node (com.oracle.truffle.api.nodes.Node)1 LinkedHashMap (java.util.LinkedHashMap)1 List (java.util.List)1 OptimizedDirectCallNode (org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode)1 OptimizedIndirectCallNode (org.graalvm.compiler.truffle.runtime.OptimizedIndirectCallNode)1 CallTreeNodeVisitor (org.graalvm.compiler.truffle.runtime.TruffleInlining.CallTreeNodeVisitor)1 TruffleInliningDecision (org.graalvm.compiler.truffle.runtime.TruffleInliningDecision)1