Skip to content

Commit 521effe

Browse files
committed
8340189: 8339531 incorrect for Big Endian platforms
Reviewed-by: mdoerr, amitkumar
1 parent e6698f5 commit 521effe

File tree

1 file changed

+9
-17
lines changed

1 file changed

+9
-17
lines changed

src/java.base/share/classes/jdk/internal/foreign/SegmentBulkOperations.java

+9-17
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@ private static long mismatch(AbstractMemorySegmentImpl src, long srcFromOffset,
200200
int offset = 0;
201201
final int limit = length & (NATIVE_THRESHOLD_MISMATCH - 8);
202202
for (; offset < limit; offset += 8) {
203-
final long s = SCOPED_MEMORY_ACCESS.getLongUnaligned(src.sessionImpl(), src.unsafeGetBase(), src.unsafeGetOffset() + srcFromOffset + offset, !Architecture.isLittleEndian());
204-
final long d = SCOPED_MEMORY_ACCESS.getLongUnaligned(dst.sessionImpl(), dst.unsafeGetBase(), dst.unsafeGetOffset() + dstFromOffset + offset, !Architecture.isLittleEndian());
203+
final long s = SCOPED_MEMORY_ACCESS.getLongUnaligned(src.sessionImpl(), src.unsafeGetBase(), src.unsafeGetOffset() + srcFromOffset + offset, false);
204+
final long d = SCOPED_MEMORY_ACCESS.getLongUnaligned(dst.sessionImpl(), dst.unsafeGetBase(), dst.unsafeGetOffset() + dstFromOffset + offset, false);
205205
if (s != d) {
206206
return start + offset + mismatch(s, d);
207207
}
@@ -210,8 +210,8 @@ private static long mismatch(AbstractMemorySegmentImpl src, long srcFromOffset,
210210

211211
// 0...0X00
212212
if (remaining >= 4) {
213-
final int s = SCOPED_MEMORY_ACCESS.getIntUnaligned(src.sessionImpl(), src.unsafeGetBase(), src.unsafeGetOffset() + srcFromOffset + offset, !Architecture.isLittleEndian());
214-
final int d = SCOPED_MEMORY_ACCESS.getIntUnaligned(dst.sessionImpl(), dst.unsafeGetBase(), dst.unsafeGetOffset() + dstFromOffset + offset, !Architecture.isLittleEndian());
213+
final int s = SCOPED_MEMORY_ACCESS.getIntUnaligned(src.sessionImpl(), src.unsafeGetBase(), src.unsafeGetOffset() + srcFromOffset + offset, false);
214+
final int d = SCOPED_MEMORY_ACCESS.getIntUnaligned(dst.sessionImpl(), dst.unsafeGetBase(), dst.unsafeGetOffset() + dstFromOffset + offset, false);
215215
if (s != d) {
216216
return start + offset + mismatch(s, d);
217217
}
@@ -220,8 +220,8 @@ private static long mismatch(AbstractMemorySegmentImpl src, long srcFromOffset,
220220
}
221221
// 0...00X0
222222
if (remaining >= 2) {
223-
final short s = SCOPED_MEMORY_ACCESS.getShortUnaligned(src.sessionImpl(), src.unsafeGetBase(), src.unsafeGetOffset() + srcFromOffset + offset, !Architecture.isLittleEndian());
224-
final short d = SCOPED_MEMORY_ACCESS.getShortUnaligned(dst.sessionImpl(), dst.unsafeGetBase(), dst.unsafeGetOffset() + dstFromOffset + offset, !Architecture.isLittleEndian());
223+
final short s = SCOPED_MEMORY_ACCESS.getShortUnaligned(src.sessionImpl(), src.unsafeGetBase(), src.unsafeGetOffset() + srcFromOffset + offset, false);
224+
final short d = SCOPED_MEMORY_ACCESS.getShortUnaligned(dst.sessionImpl(), dst.unsafeGetBase(), dst.unsafeGetOffset() + dstFromOffset + offset, false);
225225
if (s != d) {
226226
return start + offset + mismatch(s, d);
227227
}
@@ -243,26 +243,18 @@ private static long mismatch(AbstractMemorySegmentImpl src, long srcFromOffset,
243243
@ForceInline
244244
private static int mismatch(long first, long second) {
245245
final long x = first ^ second;
246-
return (Architecture.isLittleEndian()
247-
? Long.numberOfTrailingZeros(x)
248-
: Long.numberOfLeadingZeros(x)) / 8;
246+
return Long.numberOfTrailingZeros(x) / 8;
249247
}
250248

251249
@ForceInline
252250
private static int mismatch(int first, int second) {
253251
final int x = first ^ second;
254-
return (Architecture.isLittleEndian()
255-
? Integer.numberOfTrailingZeros(x)
256-
: Integer.numberOfLeadingZeros(x)) / 8;
252+
return Integer.numberOfTrailingZeros(x) / 8;
257253
}
258254

259255
@ForceInline
260256
private static int mismatch(short first, short second) {
261-
if (Architecture.isLittleEndian()) {
262-
return ((0xff & first) == (0xff & second)) ? 1 : 0;
263-
} else {
264-
return ((0xff & first) == (0xff & second)) ? 0 : 1;
265-
}
257+
return ((0xff & first) == (0xff & second)) ? 1 : 0;
266258
}
267259

268260
/**

0 commit comments

Comments
 (0)