RFR: 8324858: [vectorapi] Bounds checking issues when accessing memory segments [v2]

Paul Sandoz psandoz at openjdk.org
Thu Feb 1 23:54:25 UTC 2024


> 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


More information about the core-libs-dev mailing list