diff -r ba912ef24b27 -r 10d26626c426 rt/emul/mini/src/main/java/java/lang/reflect/Array.java --- a/rt/emul/mini/src/main/java/java/lang/reflect/Array.java Wed Apr 30 15:04:10 2014 +0200 +++ b/rt/emul/mini/src/main/java/java/lang/reflect/Array.java Tue May 06 08:36:54 2014 +0200 @@ -76,7 +76,7 @@ throw new NegativeArraySizeException(); } String sig = findSignature(componentType); - return newArray(componentType.isPrimitive(), sig, length); + return newArray(componentType.isPrimitive(), sig, null, length); } private static String findSignature(Class type) { @@ -630,24 +630,29 @@ * Private */ - @JavaScriptBody(args = { "primitive", "sig", "length" }, body = + @JavaScriptBody(args = { "primitive", "sig", "fn", "length" }, body = "var arr = new Array(length);\n" + "var value = primitive ? 0 : null;\n" + "for(var i = 0; i < length; i++) arr[i] = value;\n" + "arr.jvmName = sig;\n" + + "arr.fnc = fn;\n" +// + "java.lang.System.out.println('Assigned ' + arr.jvmName + ' fn: ' + (!!arr.fnc));\n" + "return arr;" ) + private static native Object newArray0(boolean primitive, String sig, Object fn, int length); @Exported - private static native Object newArray(boolean primitive, String sig, int length); + private static Object newArray(boolean primitive, String sig, Object fn, int length) { + return newArray0(primitive, sig, fn, length); + } @Exported private static Object multiNewArray(String sig, int[] dims, int index) throws IllegalArgumentException, NegativeArraySizeException { if (dims.length == index + 1) { - return newArray(sig.length() == 2, sig, dims[index]); + return newArray(sig.length() == 2, sig, null, dims[index]); } - Object arr = newArray(false, sig, dims[index]); + Object arr = newArray(false, sig, null, dims[index]); String compsig = sig.substring(1); int len = getLength(arr); for (int i = 0; i < len; i++) {