rt/emul/mini/src/main/java/java/lang/reflect/Array.java
changeset 1702 228f26fc1159
parent 1541 3471d74a6b99
     1.1 --- a/rt/emul/mini/src/main/java/java/lang/reflect/Array.java	Wed May 07 08:49:54 2014 +0200
     1.2 +++ b/rt/emul/mini/src/main/java/java/lang/reflect/Array.java	Tue Sep 23 21:52:27 2014 +0200
     1.3 @@ -26,7 +26,6 @@
     1.4  package java.lang.reflect;
     1.5  
     1.6  import org.apidesign.bck2brwsr.core.Exported;
     1.7 -import org.apidesign.bck2brwsr.core.JavaScriptBody;
     1.8  import org.apidesign.bck2brwsr.core.JavaScriptPrototype;
     1.9  
    1.10  /**
    1.11 @@ -135,12 +134,9 @@
    1.12          if (!array.getClass().isArray()) {
    1.13              throw new IllegalArgumentException("Argument is not an array");
    1.14          }
    1.15 -        return length(array);
    1.16 +        return Method.arrayLength(array);
    1.17      }
    1.18      
    1.19 -    @JavaScriptBody(args = { "arr" }, body = "return arr.length;")
    1.20 -    private static native int length(Object arr);
    1.21 -
    1.22      /**
    1.23       * Returns the value of the indexed component in the specified
    1.24       * array object.  The value is automatically wrapped in an object
    1.25 @@ -600,17 +596,10 @@
    1.26       * Private
    1.27       */
    1.28  
    1.29 -    @JavaScriptBody(args = { "primitive", "sig", "fn", "length" }, body =
    1.30 -          "var arr = new Array(length);\n"
    1.31 -        + "var value = primitive ? 0 : null;\n"
    1.32 -        + "for(var i = 0; i < length; i++) arr[i] = value;\n"
    1.33 -        + "arr.jvmName = sig;\n"
    1.34 -        + "arr.fnc = fn;\n"
    1.35 -//        + "java.lang.System.out.println('Assigned ' + arr.jvmName + ' fn: ' + (!!arr.fnc));\n"
    1.36 -        + "return arr;"
    1.37 -    )
    1.38      @Exported
    1.39 -    private static native Object newArray(boolean primitive, String sig, Object fn, int length);
    1.40 +    private static Object newArray(boolean primitive, String sig, Object fn, int length) {
    1.41 +        return Method.newArray(primitive, sig, fn, length);
    1.42 +    }
    1.43  
    1.44      @Exported
    1.45      private static boolean isInstance(Object arr, String sig)  {
    1.46 @@ -635,14 +624,11 @@
    1.47                  return false;
    1.48              }
    1.49          }
    1.50 -        Class<?> t = classFromFn(fn);
    1.51 +        Class<?> t = Method.classFromFn(fn);
    1.52  //        log(" to check: " + t);
    1.53          return t.isAssignableFrom(c);
    1.54      }
    1.55      
    1.56 -    @JavaScriptBody(args = { "cntstr" }, body = "return cntstr(false).constructor.$class;")
    1.57 -    private static native Class<?> classFromFn(Object cntstr);
    1.58 -
    1.59  //    @JavaScriptBody(args = { "m" }, body = "java.lang.System.out.println(m.toString().toString());")
    1.60  //    private static native void log(Object m);
    1.61      
    1.62 @@ -660,17 +646,11 @@
    1.63          String compsig = sig.substring(1);
    1.64          int len = getLength(arr);
    1.65          for (int i = 0; i < len; i++) {
    1.66 -            setArray(arr, i, multiNewArray(compsig, dims, index + 1, fn));
    1.67 +            Method.setArray(arr, i, multiNewArray(compsig, dims, index + 1, fn));
    1.68          }
    1.69          return arr;
    1.70      }
    1.71      private static Object fromPrimitive(Class<?> t, Object array, int index) {
    1.72 -        return Method.fromPrimitive(t, atArray(array, index));
    1.73 +        return Method.fromPrimitive(t, Method.atArray(array, index));
    1.74      }
    1.75 -    
    1.76 -    @JavaScriptBody(args = { "array", "index" }, body = "return array[index];")
    1.77 -    private static native Object atArray(Object array, int index);
    1.78 -
    1.79 -    @JavaScriptBody(args = { "array", "index", "v" }, body = "array[index] = v;")
    1.80 -    private static native Object setArray(Object array, int index, Object v);
    1.81  }