# HG changeset patch # User Tom Rodriguez # Date 1436553662 25200 # Node ID cbb24d44d09bc4a1accacd36ba9924b263735fea # Parent fec4d8428ace58e13d62ef21145254269513e8c6 Initialize object arrays in clone snippet diff -r fec4d8428ace -r cbb24d44d09b graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java Fri Jul 10 11:40:58 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java Fri Jul 10 11:41:02 2015 -0700 @@ -115,7 +115,8 @@ @Snippet(removeAllFrameStates = true) public static Object[] objectArrayClone(Object[] src) { - Object[] result = (Object[]) DynamicNewArrayNode.newUninitializedArray(GraalDirectives.guardingNonNull(src.getClass().getComponentType()), src.length, Kind.Object); + /* Since this snippet is lowered early the array must be initialized */ + Object[] result = (Object[]) DynamicNewArrayNode.newArray(GraalDirectives.guardingNonNull(src.getClass().getComponentType()), src.length, Kind.Object); ArrayCopyCallNode.disjointUninitializedArraycopy(src, 0, result, 0, src.length, Kind.Object); return result; } diff -r fec4d8428ace -r cbb24d44d09b graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java Fri Jul 10 11:40:58 2015 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java Fri Jul 10 11:41:02 2015 -0700 @@ -102,6 +102,10 @@ @NodeIntrinsic private static native Object newArray(Class componentType, int length, @ConstantNodeParameter boolean fillContents, @ConstantNodeParameter Kind knownElementKind); + public static Object newArray(Class componentType, int length, Kind knownElementKind) { + return newArray(componentType, length, true, knownElementKind); + } + public static Object newUninitializedArray(Class componentType, int length, Kind knownElementKind) { return newArray(componentType, length, false, knownElementKind); }