< 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 >