On Thu, 5 Sep 2024 17:47:16 GMT, Per Minborg <pminb...@openjdk.org> wrote:
>> This PR proposes to improve the performance of `MemorySegment::mismatch` by >> using Java code rather than transitioning to native code. > > Per Minborg has updated the pull request incrementally with one additional > commit since the last revision: > > Fix errors in a benchmark src/java.base/share/classes/jdk/internal/foreign/SegmentBulkOperations.java line 76: > 74: final int limit = (int) (dst.length & (NATIVE_THRESHOLD_FILL > - 8)); > 75: for (; offset < limit; offset += 8) { > 76: SCOPED_MEMORY_ACCESS.putLong(dst.sessionImpl(), > dst.unsafeGetBase(), dst.unsafeGetOffset() + offset, longValue); Now that I look again at this - I think all these calls should use `putXYZUnaligned`. Otherwise alignment can introduce issues on some platforms. That will call an `Unsafe` intrinsics that will do the best possible job at serving a potentially unaligned request. This is, btw, what we use when we do e.g. `segment.get(JAVA_LONG, offset)`. Since you are using a lower-level API here, you need to make sure you use the correct memory access primitive. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/20848#discussion_r1745959346