> 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

Reply via email to