Mercurial > hg > graal-jvmci-8
changeset 8898:9f56bb503db4
unsafeArrayCast: anchor cast after initialization of an array
author | Bernhard Urban <bernhard.urban@jku.at> |
---|---|
date | Mon, 08 Apr 2013 17:27:16 +0200 |
parents | 1a8a0375ba74 |
children | 87aebe2843a5 |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeArrayCastNode.java |
diffstat | 2 files changed, 5 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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); } /**
--- 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> T unsafeArrayCast(Object object, int length, @ConstantNodeParameter Stamp stamp); + public static native <T> T unsafeArrayCast(Object object, int length, @ConstantNodeParameter Stamp stamp, ValueNode anchor); }