changeset 10808:4278ab23c66f

new Option PrintGraphProbabilities to output probabilities during binary graph dumping
author Lukas Stadler <lukas.stadler@jku.at>
date Thu, 18 Jul 2013 14:34:45 +0200
parents d3a677910eea
children 438dd12ff25b
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/NodesToDoubles.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java graal/com.oracle.graal.printer/src/com/oracle/graal/printer/BinaryGraphPrinter.java
diffstat 3 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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;
--- 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<Boolean> PrintBinaryGraphs = new OptionValue<>(true);
+    @Option(help = "outputs probabilities for fixed nodes during binary graph dumping")
+    public static final OptionValue<Boolean> PrintGraphProbabilities = new OptionValue<>(false);
     @Option(help = "")
     public static final OptionValue<Boolean> PrintCFG = new OptionValue<>(false);
     @Option(help = "")
--- 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<Object, Object> 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);