rt/emul/mini/src/main/java/java/lang/reflect/Method.java
changeset 1702 228f26fc1159
parent 1541 3471d74a6b99
child 1838 493d5960d520
     1.1 --- a/rt/emul/mini/src/main/java/java/lang/reflect/Method.java	Wed May 07 08:49:54 2014 +0200
     1.2 +++ b/rt/emul/mini/src/main/java/java/lang/reflect/Method.java	Tue Sep 23 21:52:27 2014 +0200
     1.3 @@ -744,4 +744,31 @@
     1.4              }
     1.5          };
     1.6      }
     1.7 +    
     1.8 +    //
     1.9 +    // helper methods for Array
    1.10 +    //
    1.11 +    
    1.12 +    @JavaScriptBody(args = { "primitive", "sig", "fn", "length" }, body =
    1.13 +          "var arr = new Array(length);\n"
    1.14 +        + "var value = primitive ? 0 : null;\n"
    1.15 +        + "for(var i = 0; i < length; i++) arr[i] = value;\n"
    1.16 +        + "Object.defineProperty(arr, 'jvmName', { 'configurable': true, 'writable': true, 'value': sig });\n"
    1.17 +        + "Object.defineProperty(arr, 'fnc', { 'configurable': true, 'writable': true, 'value' : fn });\n"
    1.18 +//        + "java.lang.System.out.println('Assigned ' + arr.jvmName + ' fn: ' + (!!arr.fnc));\n"
    1.19 +        + "return arr;"
    1.20 +    )
    1.21 +    static native Object newArray(boolean primitive, String sig, Object fn, int length);
    1.22 +    
    1.23 +    @JavaScriptBody(args = { "arr" }, body = "return arr.length;")
    1.24 +    static native int arrayLength(Object arr);
    1.25 +    
    1.26 +    @JavaScriptBody(args = { "cntstr" }, body = "return cntstr(false).constructor.$class;")
    1.27 +    static native Class<?> classFromFn(Object cntstr);
    1.28 +    @JavaScriptBody(args = { "array", "index" }, body = "return array[index];")
    1.29 +    static native Object atArray(Object array, int index);
    1.30 +
    1.31 +    @JavaScriptBody(args = { "array", "index", "v" }, body = "array[index] = v;")
    1.32 +    static native Object setArray(Object array, int index, Object v);
    1.33 +    
    1.34  }