< prev index next >

src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/AbstractMemorySegmentImpl.java

Print this page
M AbstractMemorySegmentImpl.java

*** 147,164 **** return -1; } long i = 0; if (length > 7) { i = ArraysSupport.vectorizedMismatchLarge( this.base(), this.min(), that.base(), that.min(), length, ArraysSupport.LOG2_ARRAY_BYTE_INDEX_SCALE); if (i >= 0) { return i; } ! i = length - ~i; } MemoryAddress thisAddress = this.baseAddress(); MemoryAddress thatAddress = that.baseAddress(); for (; i < length; i++) { if ((byte) BYTE_HANDLE.get(thisAddress, i) != (byte) BYTE_HANDLE.get(thatAddress, i)) { --- 147,170 ---- return -1; } long i = 0; if (length > 7) { + if ((byte) BYTE_HANDLE.get(this.baseAddress(), 0) != (byte) BYTE_HANDLE.get(that.baseAddress(), 0)) { + return 0; + } i = ArraysSupport.vectorizedMismatchLarge( this.base(), this.min(), that.base(), that.min(), length, ArraysSupport.LOG2_ARRAY_BYTE_INDEX_SCALE); if (i >= 0) { return i; } ! long remaining = ~i; ! if (remaining > 7) ! throw new InternalError("remaining greater than 7: " + remaining); ! i = length - remaining; } MemoryAddress thisAddress = this.baseAddress(); MemoryAddress thatAddress = that.baseAddress(); for (; i < length; i++) { if ((byte) BYTE_HANDLE.get(thisAddress, i) != (byte) BYTE_HANDLE.get(thatAddress, i)) {
< prev index next >