[foreign-memaccess] RFR: Add MemorySegment::mismatch
Chris Hegarty
chegar at openjdk.java.net
Wed May 20 14:42:26 UTC 2020
On Wed, 20 May 2020 14:18:15 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:
>> Hi,
>>
>> As part of feedback on the Foreign Memory API (when experimenting with its usage internally in the JDK), a small number
>> of potential usability enhancements could be made to the API. This is the fourth such, and last on my current todo
>> list. This change proposes to add a new method:
>> MemorySegment::mismatch
>>
>> The mismatch semantic is very useful for building equality and comparison logic on top of segments. I found that I
>> needed such when modeling and comparing native socket address in the JDK implementation. It is possible to write your
>> own, but requires a non-trivial amount of not-trivial code - to do it right! I also think that we can provide a more
>> efficient implementation building on top of the JDK's internal mismatch support. I still need to do some perf testing
>> and add a micro-benchmake ( Maurizio suggested possibly amending TestBulkOps ). There is also the question about
>> possibly improving the JDK's internal implementation to work on long sizes (which could be done separately). For now, I
>> just want to share the idea, along with the proposed specification and initial implementation. Comments welcome.
>
> src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/AbstractMemorySegmentImpl.java line 142:
>
>> 141:
>> 142: this.checkRange(0, minSize, false);
>> 143: that.checkRange(0, minSize, false);
>
> This is of course correct but also a bit redundant (there's a similar issue, although to a smaller extent in
> `copyFrom`). Let's see how performance numbers are - basically this code can be simplified by omitting the bound check
> on both segments (since you already picked a size that must work on both) - so that we just need confinement + read
> access check.
Yeah, I did think this too at the time, but then forgot. How about I just add a private method `checkStateAndAccess`.
-------------
PR: https://git.openjdk.java.net/panama-foreign/pull/180
More information about the panama-dev
mailing list