# HG changeset patch # User Gilles Duboscq # Date 1339149157 -7200 # Node ID 62952fa9e7aa29218cbaf38d76c64099298fc0ea # Parent e09a1efdeafd0fb4540aff7dcd83af40c848eb7d UnsafeCast node is nonNull if it casts a non-null object diff -r e09a1efdeafd -r 62952fa9e7aa graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java Thu Jun 07 21:13:41 2012 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java Fri Jun 08 11:52:37 2012 +0200 @@ -42,7 +42,7 @@ } public UnsafeCastNode(ValueNode object, RiResolvedType toType) { - super(StampFactory.declared(toType)); + super(StampFactory.declared(toType, object.stamp().nonNull())); this.object = object; this.toType = toType; } diff -r e09a1efdeafd -r 62952fa9e7aa 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 Thu Jun 07 21:13:41 2012 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampFactory.java Fri Jun 08 11:52:37 2012 +0200 @@ -145,7 +145,7 @@ return declared(type, true); } - private static Stamp declared(RiResolvedType type, boolean nonNull) { + public static Stamp declared(RiResolvedType type, boolean nonNull) { assert type != null; assert type.kind(false) == CiKind.Object; RiResolvedType exact = type.exactType();