1.1 --- a/rt/emul/mini/src/main/java/java/lang/reflect/Array.java Wed Apr 30 15:04:10 2014 +0200
1.2 +++ b/rt/emul/mini/src/main/java/java/lang/reflect/Array.java Tue May 06 08:36:54 2014 +0200
1.3 @@ -76,7 +76,7 @@
1.4 throw new NegativeArraySizeException();
1.5 }
1.6 String sig = findSignature(componentType);
1.7 - return newArray(componentType.isPrimitive(), sig, length);
1.8 + return newArray(componentType.isPrimitive(), sig, null, length);
1.9 }
1.10
1.11 private static String findSignature(Class<?> type) {
1.12 @@ -630,24 +630,29 @@
1.13 * Private
1.14 */
1.15
1.16 - @JavaScriptBody(args = { "primitive", "sig", "length" }, body =
1.17 + @JavaScriptBody(args = { "primitive", "sig", "fn", "length" }, body =
1.18 "var arr = new Array(length);\n"
1.19 + "var value = primitive ? 0 : null;\n"
1.20 + "for(var i = 0; i < length; i++) arr[i] = value;\n"
1.21 + "arr.jvmName = sig;\n"
1.22 + + "arr.fnc = fn;\n"
1.23 +// + "java.lang.System.out.println('Assigned ' + arr.jvmName + ' fn: ' + (!!arr.fnc));\n"
1.24 + "return arr;"
1.25 )
1.26 + private static native Object newArray0(boolean primitive, String sig, Object fn, int length);
1.27 @Exported
1.28 - private static native Object newArray(boolean primitive, String sig, int length);
1.29 + private static Object newArray(boolean primitive, String sig, Object fn, int length) {
1.30 + return newArray0(primitive, sig, fn, length);
1.31 + }
1.32
1.33
1.34 @Exported
1.35 private static Object multiNewArray(String sig, int[] dims, int index)
1.36 throws IllegalArgumentException, NegativeArraySizeException {
1.37 if (dims.length == index + 1) {
1.38 - return newArray(sig.length() == 2, sig, dims[index]);
1.39 + return newArray(sig.length() == 2, sig, null, dims[index]);
1.40 }
1.41 - Object arr = newArray(false, sig, dims[index]);
1.42 + Object arr = newArray(false, sig, null, dims[index]);
1.43 String compsig = sig.substring(1);
1.44 int len = getLength(arr);
1.45 for (int i = 0; i < len; i++) {