# HG changeset patch # User Lukas Stadler # Date 1396875264 -7200 # Node ID f36e56e9dd9aba8c99ef915d25286c8bf25d4278 # Parent e49f62425090cec8cad2a50dd7a22bc677468500 add allowedUsageType to GuardProxy/GuardPhi, changelog, remove debug output diff -r e49f62425090 -r f36e56e9dd9a CHANGELOG.md --- a/CHANGELOG.md Mon Apr 07 13:55:45 2014 +0200 +++ b/CHANGELOG.md Mon Apr 07 14:54:24 2014 +0200 @@ -4,6 +4,7 @@ ### Graal * Explicit support for oop compression/uncompression in high level graph. * LIRGenerator refactoring. +* Explicit types for inputs (InputType enum). * ... ### Truffle diff -r e49f62425090 -r f36e56e9dd9a graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Mon Apr 07 13:55:45 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Mon Apr 07 14:54:24 2014 +0200 @@ -136,8 +136,6 @@ private static final int INLINE_USAGE_COUNT = 2; private static final Node[] NO_NODES = {}; - private static final boolean VERIFY_TYPES = true; - /** * Head of usage list. The elements of the usage list in order are {@link #usage0}, * {@link #usage1} and {@link #extraUsages}. The first null entry terminates the list. @@ -748,14 +746,12 @@ for (Node usage : usages()) { assertFalse(usage.isDeleted(), "usage %s must never be deleted", usage); assertTrue(usage.inputs().contains(this), "missing input in usage %s", usage); - if (VERIFY_TYPES) { - NodeClassIterator iterator = usage.inputs().iterator(); - while (iterator.hasNext()) { - Position pos = iterator.nextPosition(); - if (pos.get(usage) == this && pos.getInputType(usage) != InputType.Unchecked) { - assert isAllowedUsageType(pos.getInputType(usage)) : "invalid input of type " + pos.getInputType(usage) + " from " + usage + " to " + this + " (" + - pos.getInputName(usage) + ")"; - } + NodeClassIterator iterator = usage.inputs().iterator(); + while (iterator.hasNext()) { + Position pos = iterator.nextPosition(); + if (pos.get(usage) == this && pos.getInputType(usage) != InputType.Unchecked) { + assert isAllowedUsageType(pos.getInputType(usage)) : "invalid input of type " + pos.getInputType(usage) + " from " + usage + " to " + this + " (" + pos.getInputName(usage) + + ")"; } } } diff -r e49f62425090 -r f36e56e9dd9a graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java Mon Apr 07 13:55:45 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java Mon Apr 07 14:54:24 2014 +0200 @@ -26,7 +26,7 @@ import com.oracle.graal.nodes.extended.*; import com.oracle.graal.nodes.type.*; -@NodeInfo(nameTemplate = "GuardPhi({i#values})") +@NodeInfo(nameTemplate = "GuardPhi({i#values})", allowedUsageTypes = {InputType.Guard}) public class GuardPhiNode extends PhiNode implements GuardingNode { @Input(InputType.Guard) final NodeInputList values = new NodeInputList<>(this); diff -r e49f62425090 -r f36e56e9dd9a graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java Mon Apr 07 13:55:45 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java Mon Apr 07 14:54:24 2014 +0200 @@ -27,6 +27,7 @@ import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; +@NodeInfo(allowedUsageTypes = {InputType.Guard}) public class GuardProxyNode extends ProxyNode implements GuardingNode, Proxy { @Input(InputType.Guard) private GuardingNode value; diff -r e49f62425090 -r f36e56e9dd9a 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 Mon Apr 07 13:55:45 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java Mon Apr 07 14:54:24 2014 +0200 @@ -25,7 +25,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; import com.oracle.graal.graph.iterators.*; -import com.oracle.graal.nodes.extended.*; import com.oracle.graal.nodes.type.*; /** @@ -133,23 +132,10 @@ @Override public boolean isAllowedUsageType(InputType type) { - if (getKind() != Kind.Void && getKind() != Kind.Illegal && type == InputType.Value) { + if (getKind() != Kind.Void && type == InputType.Value) { return true; } else { return super.isAllowedUsageType(type); } } - - @Override - public boolean verify() { - if ((getKind() != Kind.Illegal && getKind() != Kind.Void) != isAllowedUsageType(InputType.Value)) { - System.out.println("mismatch: " + this + " kind: " + getKind() + " isAllowedUsageType: " + isAllowedUsageType(InputType.Value)); - } - if (!(this instanceof WriteNode || this instanceof ReadNode || this instanceof JavaWriteNode || this instanceof JavaReadNode || this instanceof InvokeNode)) { - if ((this instanceof GuardingNode) != isAllowedUsageType(InputType.Guard)) { - System.out.println("mismatch: " + this + " guard: " + (this instanceof GuardingNode) + " isAllowedUsageType: " + isAllowedUsageType(InputType.Guard)); - } - } - return super.verify(); - } }