changeset 8656:369710426f74

PushNodesThroughPi: add metric for pushed nodes
author Bernhard Urban <bernhard.urban@jku.at>
date Fri, 05 Apr 2013 15:54:57 +0200
parents ce271e0d0372
children 63400866de15
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/PiPushable.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushNodesThroughPi.java
diffstat 4 files changed, 17 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java	Fri Apr 05 15:24:22 2013 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java	Fri Apr 05 15:54:57 2013 +0200
@@ -80,7 +80,8 @@
     }
 
     @Override
-    public void push(PiNode parent) {
+    public boolean push(PiNode parent) {
         replaceFirstInput(parent, parent.object());
+        return true;
     }
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java	Fri Apr 05 15:24:22 2013 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java	Fri Apr 05 15:54:57 2013 +0200
@@ -99,7 +99,7 @@
     }
 
     @Override
-    public void push(PiNode parent) {
+    public boolean push(PiNode parent) {
         Object locId = location().locationIdentity();
         if (locId instanceof ResolvedJavaField) {
             ResolvedJavaType fieldType = ((ResolvedJavaField) locId).getDeclaringClass();
@@ -107,8 +107,10 @@
 
             if (fieldType.isAssignableFrom(beforePiType)) {
                 replaceFirstInput(parent, parent.object());
+                return true;
             }
         }
+        return false;
     }
 
     /**
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/PiPushable.java	Fri Apr 05 15:24:22 2013 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/PiPushable.java	Fri Apr 05 15:54:57 2013 +0200
@@ -29,5 +29,10 @@
  */
 public interface PiPushable {
 
-    void push(PiNode parent);
+    /**
+     * 
+     * @param parent PiNode
+     * @return true if node was moved
+     */
+    boolean push(PiNode parent);
 }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushNodesThroughPi.java	Fri Apr 05 15:24:22 2013 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushNodesThroughPi.java	Fri Apr 05 15:54:57 2013 +0200
@@ -22,6 +22,7 @@
  */
 package com.oracle.graal.phases.common;
 
+import com.oracle.graal.debug.*;
 import com.oracle.graal.graph.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.spi.*;
@@ -29,13 +30,17 @@
 
 public class PushNodesThroughPi extends Phase {
 
+    public static final DebugMetric PUSHED_NODES = Debug.metric("NodesPushedThroughPi");
+
     @Override
     protected void run(StructuredGraph graph) {
         for (PiNode pi : graph.getNodes(PiNode.class)) {
             for (Node n : pi.usages().snapshot()) {
                 if (n instanceof PiPushable) {
                     PiPushable pip = (PiPushable) n;
-                    pip.push(pi);
+                    if (pip.push(pi)) {
+                        PUSHED_NODES.add(1);
+                    }
                 }
             }
         }