RFR: 8338591: Improve performance of MemorySegment::copy

Francesco Nigro duke at openjdk.org
Tue Sep 3 17:18:20 UTC 2024


On Tue, 3 Sep 2024 15:44:34 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> src/java.base/share/classes/jdk/internal/foreign/AbstractMemorySegmentImpl.java line 642:
>> 
>>> 640:             // 0...0X00
>>> 641:             if (remaining >= 4) {
>>> 642:                 final int v = SCOPED_MEMORY_ACCESS.getInt(src.sessionImpl(), src.unsafeGetBase(),src.unsafeGetOffset() + srcOffset + offset);
>> 
>> src.sessionImpl() worth being hoisted out once? It's a minor thing eh -same for `dst` and base/offsets
>
> tried that - and it's mostly a wash. For `unsafeGetBase` some care is required - that method contains a cast to the sharp array type that is backing the segment (if the segment is on-heap). This cast is crucial to inform the `Unsafe` intrinsics on the type of the array being operated on. If `Unsafe` doesn't know that type it falls back to a slower intrinsics. So better to keep that where it is.

thanks for the info . didn't knew about it! 🙏

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/20829#discussion_r1742413680


More information about the core-libs-dev mailing list