On Mon, 29 Jan 2024 19:45:41 GMT, Paul Sandoz <psan...@openjdk.org> wrote:
> 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. This pull request has now been integrated. Changeset: 1ae85138 Author: Paul Sandoz <psan...@openjdk.org> URL: https://git.openjdk.org/jdk/commit/1ae851387f881263ccc6aeace5afdd0f49d41d33 Stats: 248 lines in 39 files changed: 132 ins; 8 del; 108 mod 8324858: [vectorapi] Bounds checking issues when accessing memory segments Reviewed-by: mcimadamore, jbhateja ------------- PR: https://git.openjdk.org/jdk/pull/17621