# HG changeset patch # User Bernhard Urban # Date 1365434836 -7200 # Node ID 9f56bb503db4ca67b2de11be6d84d26ce52954d4 # Parent 1a8a0375ba74d6a21241e65270f835f8be35ddd9 unsafeArrayCast: anchor cast after initialization of an array diff -r 1a8a0375ba74 -r 9f56bb503db4 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Tue Apr 02 12:14:15 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Mon Apr 08 17:27:16 2013 +0200 @@ -125,7 +125,8 @@ formatArray(hub, allocationSize, length, headerSize, memory, prototypeMarkWord, fillContents); result = memory.toObject(); } - return unsafeArrayCast(verifyOop(result), length, StampFactory.forNodeIntrinsic()); + BeginNode anchorNode = BeginNode.anchor(StampFactory.forNodeIntrinsic()); + return unsafeArrayCast(verifyOop(result), length, StampFactory.forNodeIntrinsic(), anchorNode); } /** diff -r 1a8a0375ba74 -r 9f56bb503db4 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeArrayCastNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeArrayCastNode.java Tue Apr 02 12:14:15 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeArrayCastNode.java Mon Apr 08 17:27:16 2013 +0200 @@ -37,8 +37,8 @@ return length; } - public UnsafeArrayCastNode(ValueNode object, ValueNode length, Stamp stamp) { - super(object, stamp); + public UnsafeArrayCastNode(ValueNode object, ValueNode length, Stamp stamp, ValueNode anchor) { + super(object, stamp, anchor); this.length = length; } @@ -51,5 +51,5 @@ } @NodeIntrinsic - public static native T unsafeArrayCast(Object object, int length, @ConstantNodeParameter Stamp stamp); + public static native T unsafeArrayCast(Object object, int length, @ConstantNodeParameter Stamp stamp, ValueNode anchor); }