# HG changeset patch # User Lukas Stadler # Date 1374150885 -7200 # Node ID 4278ab23c66fe3b304bf473a0eb3ddd6c542639e # Parent d3a677910eea410cc39539c4f750e1b7d82c24ec new Option PrintGraphProbabilities to output probabilities during binary graph dumping diff -r d3a677910eea -r 4278ab23c66f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/NodesToDoubles.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/NodesToDoubles.java Thu Jul 18 13:17:37 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/NodesToDoubles.java Thu Jul 18 14:34:45 2013 +0200 @@ -39,6 +39,10 @@ nodeProbabilities.put(n, value); } + public boolean contains(FixedNode n) { + return nodeProbabilities.containsKey(n); + } + public double get(FixedNode n) { Double value = nodeProbabilities.get(n); assert value != null; diff -r d3a677910eea -r 4278ab23c66f graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java Thu Jul 18 13:17:37 2013 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java Thu Jul 18 14:34:45 2013 +0200 @@ -148,6 +148,8 @@ // Ideal graph visualizer output settings @Option(help = "") public static final OptionValue PrintBinaryGraphs = new OptionValue<>(true); + @Option(help = "outputs probabilities for fixed nodes during binary graph dumping") + public static final OptionValue PrintGraphProbabilities = new OptionValue<>(false); @Option(help = "") public static final OptionValue PrintCFG = new OptionValue<>(false); @Option(help = "") diff -r d3a677910eea -r 4278ab23c66f graal/com.oracle.graal.printer/src/com/oracle/graal/printer/BinaryGraphPrinter.java --- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/BinaryGraphPrinter.java Thu Jul 18 13:17:37 2013 +0200 +++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/BinaryGraphPrinter.java Thu Jul 18 14:34:45 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.printer; +import static com.oracle.graal.phases.GraalOptions.*; + import java.io.*; import java.nio.*; import java.nio.channels.*; @@ -34,6 +36,8 @@ import com.oracle.graal.graph.NodeClass.Position; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.cfg.*; +import com.oracle.graal.nodes.util.*; +import com.oracle.graal.phases.graph.*; import com.oracle.graal.phases.schedule.*; public class BinaryGraphPrinter implements GraphPrinter { @@ -371,11 +375,21 @@ @SuppressWarnings("deprecation") private void writeNodes(Graph graph) throws IOException { + NodesToDoubles probabilities = null; + if (PrintGraphProbabilities.getValue()) { + try { + probabilities = new ComputeProbabilityClosure((StructuredGraph) graph).apply(); + } catch (Throwable t) { + } + } Map props = new HashMap<>(); writeInt(graph.getNodeCount()); for (Node node : graph.getNodes()) { NodeClass nodeClass = node.getNodeClass(); node.getDebugProperties(props); + if (probabilities != null && node instanceof FixedNode && probabilities.contains((FixedNode) node)) { + props.put("probability", probabilities.get((FixedNode) node)); + } writeInt(node.getId()); writePoolObject(nodeClass); writeByte(node.predecessor() == null ? 0 : 1);