Improve array checking for Serializable/Clonable. Check if something is array over class instance is costly and direct check is simple to implement. Change-Id: Iaeb32125ded3cde99a6f53bc40cc65d3ce41b838
diff --git a/user/super/com/google/gwt/emul/java/io/Serializable.java b/user/super/com/google/gwt/emul/java/io/Serializable.java index 3032baf..9458df5 100644 --- a/user/super/com/google/gwt/emul/java/io/Serializable.java +++ b/user/super/com/google/gwt/emul/java/io/Serializable.java
@@ -16,6 +16,7 @@ package java.io; import javaemul.internal.JsUtils; +import javaemul.internal.NativeArray; import jsinterop.annotations.JsMethod; /** @@ -37,7 +38,7 @@ || type.equals("string") || instance.getTypeMarker() // Arrays are implicitly instances of Serializable (JLS 10.7). - || instance.getClass().isArray(); + || NativeArray.isArray(instance); } // CHECKSTYLE_ON: end utility methods }
diff --git a/user/super/com/google/gwt/emul/java/lang/Cloneable.java b/user/super/com/google/gwt/emul/java/lang/Cloneable.java index 74535b4..907f569 100644 --- a/user/super/com/google/gwt/emul/java/lang/Cloneable.java +++ b/user/super/com/google/gwt/emul/java/lang/Cloneable.java
@@ -15,6 +15,7 @@ */ package java.lang; +import javaemul.internal.NativeArray; import jsinterop.annotations.JsMethod; /** @@ -31,7 +32,7 @@ return instance.getTypeMarker() // Arrays are implicitly instances of Cloneable (JLS 10.7). - || instance.getClass().isArray(); + || NativeArray.isArray(instance); } // CHECKSTYLE_ON: end utility methods }
diff --git a/user/super/com/google/gwt/emul/javaemul/internal/NativeArray.java b/user/super/com/google/gwt/emul/javaemul/internal/NativeArray.java index 7f0ea99..792ab3c 100644 --- a/user/super/com/google/gwt/emul/javaemul/internal/NativeArray.java +++ b/user/super/com/google/gwt/emul/javaemul/internal/NativeArray.java
@@ -39,4 +39,6 @@ public native Object[] slice(int fromIndex, int toIndex); public native void splice(int index, int deleteCount, @DoNotAutobox Object... value); public native <T> void sort(CompareFunction compareFunction); + + public static native boolean isArray(Object o); }