RFR: 8317121: vector_masked_load instruction is moved too early after JDK-8286941

Vladimir Kozlov kvn at openjdk.org
Tue Oct 3 05:41:19 UTC 2023


[JDK-8286941](https://bugs.openjdk.org/browse/JDK-8286941) changed how masked vector operations are created and processed. It calls `LoadNode::Ideal()` which tries to find best place in code for it.
Unfortunately some places do not expect to have vector access to modified memory.
In `LoadNode::find_previous_arraycopy()` the call to `ArrayCopyNode::modifies()` assumes that it access only one element and did not take into account that a vector may access wider memory.
The same issue exists with Unsafe mismatching (bigger size) access.

The fix is to take into account size of memory access.

New regression test is added which show the issue.

Tested tier1-5. xcomp, stress. Testing tier6-7 in progress.

-------------

Commit messages:
 - Added second test run without StressSeed
 - 8317121: vector_masked_load instruction is moved too early after JDK-8286941

Changes: https://git.openjdk.org/jdk/pull/16015/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=16015&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8317121
  Stats: 125 lines in 2 files changed: 123 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/16015.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/16015/head:pull/16015

PR: https://git.openjdk.org/jdk/pull/16015


More information about the hotspot-compiler-dev mailing list