< prev index next >

src/java.base/share/classes/jdk/internal/util/ArraysSupport.java

Print this page
M ArraysSupport.java


 166     public static long vectorizedMismatchLarge(Object a, long aOffset,
 167                                                Object b, long bOffset,
 168                                                long length,
 169                                                int log2ArrayIndexScale) {
 170         long off = 0;
 171         long remaining = length;
 172         int i ;
 173         while (remaining > 7) {
 174             int size = (int) Math.min(Integer.MAX_VALUE, remaining);
 175             i = vectorizedMismatch(
 176                     a, aOffset + off,
 177                     b, bOffset + off,
 178                     size, log2ArrayIndexScale);
 179             if (i >= 0)
 180                 return off + i;
 181 
 182             i = size - ~i;
 183             off += i;
 184             remaining -= i;
 185         }
 186         return ~off;
 187     }
 188 
 189     // Booleans
 190     // Each boolean element takes up one byte
 191 
 192     public static int mismatch(boolean[] a,
 193                                boolean[] b,
 194                                int length) {
 195         int i = 0;
 196         if (length > 7) {
 197             if (a[0] != b[0])
 198                 return 0;
 199             i = vectorizedMismatch(
 200                     a, Unsafe.ARRAY_BOOLEAN_BASE_OFFSET,
 201                     b, Unsafe.ARRAY_BOOLEAN_BASE_OFFSET,
 202                     length, LOG2_ARRAY_BOOLEAN_INDEX_SCALE);
 203             if (i >= 0)
 204                 return i;
 205             i = length - ~i;
 206         }




 166     public static long vectorizedMismatchLarge(Object a, long aOffset,
 167                                                Object b, long bOffset,
 168                                                long length,
 169                                                int log2ArrayIndexScale) {
 170         long off = 0;
 171         long remaining = length;
 172         int i ;
 173         while (remaining > 7) {
 174             int size = (int) Math.min(Integer.MAX_VALUE, remaining);
 175             i = vectorizedMismatch(
 176                     a, aOffset + off,
 177                     b, bOffset + off,
 178                     size, log2ArrayIndexScale);
 179             if (i >= 0)
 180                 return off + i;
 181 
 182             i = size - ~i;
 183             off += i;
 184             remaining -= i;
 185         }
 186         return ~remaining;
 187     }
 188 
 189     // Booleans
 190     // Each boolean element takes up one byte
 191 
 192     public static int mismatch(boolean[] a,
 193                                boolean[] b,
 194                                int length) {
 195         int i = 0;
 196         if (length > 7) {
 197             if (a[0] != b[0])
 198                 return 0;
 199             i = vectorizedMismatch(
 200                     a, Unsafe.ARRAY_BOOLEAN_BASE_OFFSET,
 201                     b, Unsafe.ARRAY_BOOLEAN_BASE_OFFSET,
 202                     length, LOG2_ARRAY_BOOLEAN_INDEX_SCALE);
 203             if (i >= 0)
 204                 return i;
 205             i = length - ~i;
 206         }


< prev index next >