rt/emul/mini/src/main/java/java/lang/reflect/Array.java
branchclosure
changeset 1534 ca538fb33f48
parent 1533 9e1af8aae380
child 1535 c02c6d409461
     1.1 --- a/rt/emul/mini/src/main/java/java/lang/reflect/Array.java	Tue May 06 08:38:34 2014 +0200
     1.2 +++ b/rt/emul/mini/src/main/java/java/lang/reflect/Array.java	Tue May 06 10:08:42 2014 +0200
     1.3 @@ -642,7 +642,40 @@
     1.4      @Exported
     1.5      private static native Object newArray(boolean primitive, String sig, Object fn, int length);
     1.6  
     1.7 +    @Exported
     1.8 +    private static boolean isInstance(Object arr, String sig)  {
     1.9 +        if (arr == null) {
    1.10 +            return false;
    1.11 +        }
    1.12 +        return sig.equals(arr.getClass().getName());
    1.13 +    }
    1.14 +    
    1.15 +    @Exported
    1.16 +    private static boolean isInstance(Object arr, int dimensions, Object fn) throws ClassNotFoundException {
    1.17 +        if (arr == null) {
    1.18 +            return false;
    1.19 +        }
    1.20 +//        log("isInstance for " + arr + " and " + dimensions);
    1.21 +        Class<?> c = arr.getClass();
    1.22 +        while (dimensions-- > 0) {
    1.23 +//            log(" class: " + c);
    1.24 +            c = c.getComponentType();
    1.25 +//            log(" next class: " + c);
    1.26 +            if (c == null) {
    1.27 +                return false;
    1.28 +            }
    1.29 +        }
    1.30 +        Class<?> t = classFromFn(fn);
    1.31 +//        log(" to check: " + t);
    1.32 +        return t.isAssignableFrom(c);
    1.33 +    }
    1.34 +    
    1.35 +    @JavaScriptBody(args = { "cntstr" }, body = "return cntstr(false).constructor.$class;")
    1.36 +    private static native Class<?> classFromFn(Object cntstr);
    1.37  
    1.38 +//    @JavaScriptBody(args = { "m" }, body = "java.lang.System.out.println(m.toString().toString());")
    1.39 +//    private static native void log(Object m);
    1.40 +    
    1.41      @Exported
    1.42      private static Object multiNewArray(String sig, int[] dims, int index)
    1.43      throws IllegalArgumentException, NegativeArraySizeException {