# HG changeset patch # User Lukas Stadler # Date 1331742211 -3600 # Node ID 68918a528cbed94825fd8618aa2eca1957a9030c # Parent f8fe72ce4adcdc4f3a48b87ec2a276919f4cead6 experimental: dependencies on all ValueNodes diff -r f8fe72ce4adc -r 68918a528cbe graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BooleanNode.java --- 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(); } diff -r f8fe72ce4adc -r 68918a528cbe graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java --- 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 dependencies; + + public NodeInputList 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 getDebugProperties() { + Map 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; + } } diff -r f8fe72ce4adc -r 68918a528cbe graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java --- 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); + } } diff -r f8fe72ce4adc -r 68918a528cbe graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java --- 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; + } } diff -r f8fe72ce4adc -r 68918a528cbe graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java --- 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 dependencies; - - public NodeInputList 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