rt/emul/mini/src/main/java/java/lang/reflect/Array.java
branchclosure
changeset 1532 10d26626c426
parent 1513 ba912ef24b27
child 1533 9e1af8aae380
     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++) {