> The implementation of method `VectorSpecies::fromMemorySegment`, in
> `AbstractSpecies::fromMemorySegment`, neglects to perform bounds checks on
> the offset argument when the method is compiled by C2 (bounds checks are
> performed when interpreted and by C1).
>
> This is an oversight and explicit bounds checks are required, as is already
> case for the other load and store memory access methods (including storing to
> memory memory segments).
>
> The workaround is to call the static method `{T}Vector::fromMemorySegment`.
>
> The fix is for the implementation(s) of `VectorSpecies::fromMemorySegment` to
> do the same and call `{T}Vector::fromMemorySegment`, following the same
> pattern for implementations of `VectorSpecies::fromArray`.
>
> The tests have been conservatively updated to call the species access method
> where possible in the knowledge that it calls the vector access method (the
> tests were intended to test out of bounds access when compiled by C2).
>
> Thinking ahead its tempting to remove the species access methods, simplifying
> functionality that is duplicated.
Paul Sandoz has updated the pull request incrementally with one additional
commit since the last revision:
Update/add clarifying comments
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/17621/files
- new: https://git.openjdk.org/jdk/pull/17621/files/ba326467..e3958a16
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=17621&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=17621&range=00-01
Stats: 90 lines in 38 files changed: 76 ins; 0 del; 14 mod
Patch: https://git.openjdk.org/jdk/pull/17621.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/17621/head:pull/17621
PR: https://git.openjdk.org/jdk/pull/17621