changeset 5080:68918a528cbe

experimental: dependencies on all ValueNodes
author Lukas Stadler <lukas.stadler@jku.at>
date Wed, 14 Mar 2012 17:23:31 +0100
parents f8fe72ce4adc
children 3e21269ee901
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BooleanNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java
diffstat 5 files changed, 47 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BooleanNode.java	Wed Mar 14 17:22:55 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BooleanNode.java	Wed Mar 14 17:23:31 2012 +0100
@@ -22,6 +22,7 @@
  */
 package com.oracle.graal.nodes;
 
+import com.oracle.graal.graph.*;
 import com.oracle.graal.nodes.calc.*;
 import com.oracle.graal.nodes.type.*;
 
@@ -32,5 +33,9 @@
         super(stamp);
     }
 
+    public BooleanNode(Stamp stamp, Node... dependencies) {
+        super(stamp, dependencies);
+    }
+
     public abstract BooleanNode negate();
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java	Wed Mar 14 17:22:55 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java	Wed Mar 14 17:23:31 2012 +0100
@@ -22,8 +22,11 @@
  */
 package com.oracle.graal.nodes;
 
+import java.util.*;
+
 import com.oracle.max.cri.ci.*;
 import com.oracle.max.cri.ri.*;
+import com.oracle.graal.graph.*;
 import com.oracle.graal.nodes.type.*;
 
 /**
@@ -38,15 +41,21 @@
      */
     @Data private Stamp stamp;
 
-    /**
-     * Creates a new value with the specified kind.
-     * @param kind the type of this value
-     * @param inputCount
-     * @param successorCount
-     * @param graph
-     */
+    @Input private NodeInputList<Node> dependencies;
+
+    public NodeInputList<Node> dependencies() {
+        return dependencies;
+    }
+
     public ValueNode(Stamp stamp) {
         this.stamp = stamp;
+        this.dependencies = new NodeInputList<>(this);
+        assert kind() != null && kind() == kind().stackKind() : kind() + " != " + kind().stackKind();
+    }
+
+    public ValueNode(Stamp stamp, Node... dependencies) {
+        this.stamp = stamp;
+        this.dependencies = new NodeInputList<>(this, dependencies);
         assert kind() != null && kind() == kind().stackKind() : kind() + " != " + kind().stackKind();
     }
 
@@ -105,4 +114,17 @@
     public final RiResolvedType declaredType() {
         return stamp.declaredType();
     }
+
+    @Override
+    public Map<Object, Object> getDebugProperties() {
+        Map<Object, Object> properties = super.getDebugProperties();
+        if (!dependencies.isEmpty()) {
+            StringBuilder str = new StringBuilder();
+            for (int i = 0; i < dependencies.size(); i++) {
+                str.append(i == 0 ? "" : ", ").append(dependencies.get(i).toString(Verbosity.Id));
+            }
+            properties.put("dependencies", str.toString());
+        }
+        return properties;
+    }
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java	Wed Mar 14 17:22:55 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java	Wed Mar 14 17:23:31 2012 +0100
@@ -27,7 +27,12 @@
 import com.oracle.graal.nodes.type.*;
 
 public abstract class FloatingNode extends ValueNode implements Node.ValueNumberable {
+
     public FloatingNode(Stamp stamp) {
         super(stamp);
     }
+
+    public FloatingNode(Stamp stamp, Node... dependencies) {
+        super(stamp, dependencies);
+    }
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java	Wed Mar 14 17:22:55 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java	Wed Mar 14 17:23:31 2012 +0100
@@ -65,4 +65,11 @@
         this.guard = guard;
         this.location = location;
     }
+
+    public FloatingAccessNode(ValueNode object, GuardNode guard, LocationNode location, Stamp stamp, Node... dependencies) {
+        super(stamp, dependencies);
+        this.object = object;
+        this.guard = guard;
+        this.location = location;
+    }
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java	Wed Mar 14 17:22:55 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java	Wed Mar 14 17:23:31 2012 +0100
@@ -32,15 +32,8 @@
 
 public final class FloatingReadNode extends FloatingAccessNode implements Node.IterableNodeType, LIRLowerable, Canonicalizable {
 
-    @Input private final NodeInputList<Node> dependencies;
-
-    public NodeInputList<Node> dependencies() {
-        return dependencies;
-    }
-
     public FloatingReadNode(ValueNode object, GuardNode guard, LocationNode location, Stamp stamp, Node... dependencies) {
-        super(object, guard, location, stamp);
-        this.dependencies = new NodeInputList<>(this, dependencies);
+        super(object, guard, location, stamp, dependencies);
     }
 
     @Override