# HG changeset patch # User Christian Wimmer # Date 1347657036 25200 # Node ID 33dab7b4b00676c7592301d52767c97196887e5f # Parent 6b56cf2bf7da43463096a04fecc567594e504171 Add snippet factory methods diff -r 6b56cf2bf7da -r 33dab7b4b006 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AccessNode.java Fri Sep 14 14:07:58 2012 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AccessNode.java Fri Sep 14 14:10:36 2012 -0700 @@ -34,7 +34,7 @@ public abstract class AccessNode extends FixedWithNextNode implements Access { @Input private ValueNode object; - @Input private LocationNode location; + @Input private ValueNode location; private boolean nullCheck; public ValueNode object() { @@ -42,7 +42,7 @@ } public LocationNode location() { - return location; + return (LocationNode) location; } public boolean getNullCheck() { @@ -53,7 +53,7 @@ this.nullCheck = check; } - public AccessNode(ValueNode object, LocationNode location, Stamp stamp) { + public AccessNode(ValueNode object, ValueNode location, Stamp stamp) { super(stamp); this.object = object; this.location = location; diff -r 6b56cf2bf7da -r 33dab7b4b006 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Fri Sep 14 14:07:58 2012 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Fri Sep 14 14:10:36 2012 -0700 @@ -34,7 +34,7 @@ */ public final class ReadNode extends AccessNode implements Node.IterableNodeType, LIRLowerable, Simplifiable/*, Canonicalizable*/ { - public ReadNode(ValueNode object, LocationNode location, Stamp stamp) { + public ReadNode(ValueNode object, ValueNode location, Stamp stamp) { super(object, location, stamp); } @@ -77,4 +77,15 @@ } } } + + @SuppressWarnings("unused") + private ReadNode(ValueNode object, ValueNode location) { + this(object, location, StampFactory.forNodeIntrinsic()); + } + + @SuppressWarnings("unused") + @NodeIntrinsic + public static T readMemory(Object object, Object location) { + throw new UnsupportedOperationException(); + } } diff -r 6b56cf2bf7da -r 33dab7b4b006 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java Fri Sep 14 14:07:58 2012 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java Fri Sep 14 14:10:36 2012 -0700 @@ -54,7 +54,7 @@ return value; } - public WriteNode(ValueNode object, ValueNode value, LocationNode location) { + public WriteNode(ValueNode object, ValueNode value, ValueNode location) { super(object, location, StampFactory.forVoid()); this.value = value; } @@ -75,4 +75,10 @@ } } } + + @SuppressWarnings("unused") + @NodeIntrinsic + public static void writeMemory(Object object, Object value, Object location) { + throw new UnsupportedOperationException(); + } } diff -r 6b56cf2bf7da -r 33dab7b4b006 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java Fri Sep 14 14:07:58 2012 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java Fri Sep 14 14:10:36 2012 -0700 @@ -64,4 +64,10 @@ public void lower(LoweringTool tool) { tool.getRuntime().lower(this, tool); } + + @SuppressWarnings("unused") + @NodeIntrinsic + public static int arrayLength(Object array) { + throw new UnsupportedOperationException(); + } } diff -r 6b56cf2bf7da -r 33dab7b4b006 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampFactory.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampFactory.java Fri Sep 14 14:07:58 2012 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampFactory.java Fri Sep 14 14:10:36 2012 -0700 @@ -37,7 +37,7 @@ private static final Stamp virtualStamp = new GenericStamp(GenericStampType.Virtual); private static final Stamp conditionStamp = new GenericStamp(GenericStampType.Condition); private static final Stamp voidStamp = new GenericStamp(GenericStampType.Void); - + private static final Stamp nodeIntrinsicStamp = new ObjectStamp(null, false, false, false); private static final Stamp positiveInt = forInteger(Kind.Int, 0, Integer.MAX_VALUE, Integer.MAX_VALUE); private static void setCache(Kind kind, Stamp stamp) { @@ -74,6 +74,14 @@ return voidStamp; } + /** + * A stamp used only in the graph of intrinsics, e.g., snippets. It is then replaced by an actual stamp when the + * intrinsic is used, i.e., when the snippet template is instantiated. + */ + public static Stamp forNodeIntrinsic() { + return nodeIntrinsicStamp; + } + public static Stamp intValue() { return forKind(Kind.Int); }