On Thu, 16 Jun 2022 12:16:19 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> wrote:
>> While playing with the API, I've realized that some of the out of bound >> error messgaes come out incorrectly. >> >> This is because the bound check is performed as follows (to avoid overflow): >> >> >> Objects.checkIndex(offset, this.length - length + 1); >> >> >> So, if out-of-bounds access is detected, the resulting exception mentions >> the values of the first and second parameter, respectively - but since the >> second parameter is the result of a subtraction, it doesn't make sense. >> >> The solution is not to use `Objects.checkIndex` directly, but, instead, drop >> down one level, and pass our own "IOOB formatter": >> >> >> Preconditions.checkIndex(offset, this.length - length + 1, this); >> >> >> Note that, in order to recover the correct values, the formatter needs to >> know the segment size - so I made `AbstractMemorySegment` act as a formatter >> (so we don't need to allocate in such a hot path). >> >> The fix seems to bring back the desired messages - but I would like some >> confirmation that doing this won't disrupt intrinsification of the >> `checkIndex` method. > > Maurizio Cimadamore has updated the pull request incrementally with one > additional commit since the last revision: > > Add @ForceInline on AbstractLayout::byteSize Marked as reviewed by psandoz (Reviewer). ------------- PR: https://git.openjdk.org/jdk19/pull/24