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 {