On Fri, 10 May 2024 16:10:29 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> wrote:
>> Consider this layout: >> >> >> MemoryLayout SEQ = MemoryLayout.sequenceLayout(5, >> MemoryLayout.sequenceLayout(10, JAVA_INT)); >> >> >> And the corresponding offset handle: >> >> >> MethodHandle offsetHandle = SEQ.offsetHandle(PathElement.sequenceLayout(), >> PathElement.sequenceLayout()); >> >> >> The resulting method handle takes two additional `long` indices. The >> implementation checks that the dynamically provided indices conform to the >> bound available at construction: that is, the first index must be < 5, while >> the second must be < 10. If this is not true, an `IndexOutOfBoundException` >> is thrown. >> >> However, the javadoc for `MemoryLayout::byteOffsetHandle` doesn't claim >> anything in this direction. There are only some vague claims in the javadoc >> for `PathElement::sequenceElement()` and `PathElement::sequenceElement(long, >> long, long)` which make some claims on which indices are actually allowed, >> but the text seems more in the tone of a discussion, rather than actual >> normative text. >> >> I've tweaked the javadoc for `MemoryLayout::byteOffsetHandle` to actually >> state that the indices will be checked against the "size" of the >> corresponding open path element (this is a new concept that I also have >> defined in the javadoc). >> >> I also added a test for `byteOffsetHandle` as I don't think we had a test >> for that specifically (although this method is tested indirectly, via >> `MemoryLayout::varHandle`). > > Maurizio Cimadamore has updated the pull request incrementally with one > additional commit since the last revision: > > Fix another index check Marked as reviewed by psandoz (Reviewer). ------------- PR Review: https://git.openjdk.org/jdk/pull/19158#pullrequestreview-2050771038