Reduce cost of span type checking

bug:22378829

Change-Id: I1da5154b2fb4f5032eaed44586d5470d28ceb45b
diff --git a/core/java/android/text/SpannableStringInternal.java b/core/java/android/text/SpannableStringInternal.java
index d114d32..5c5deb4 100644
--- a/core/java/android/text/SpannableStringInternal.java
+++ b/core/java/android/text/SpannableStringInternal.java
@@ -214,10 +214,6 @@
         Object ret1 = null;
 
         for (int i = 0; i < spanCount; i++) {
-            if (kind != null && !kind.isInstance(spans[i])) {
-                continue;
-            }
-
             int spanStart = data[i * COLUMNS + START];
             int spanEnd = data[i * COLUMNS + END];
 
@@ -237,6 +233,11 @@
                 }
             }
 
+            // verify span class as late as possible, since it is expensive
+            if (kind != null && !kind.isInstance(spans[i])) {
+                continue;
+            }
+
             if (count == 0) {
                 ret1 = spans[i];
                 count++;