RFR: 8347489: RISC-V: Misaligned memory access with COH

Fei Yang fyang at openjdk.org
Tue Jan 14 03:54:46 UTC 2025


Hi, please consider this change.

We have different base_offset (4 bytes instead of 8 bytes aligned) with COH. This causes misaligned memory accesses for several instrinsics like String.Compare or String.Equals. The reason is that we assume 8-byte alignment and process one 8-byte word starting at the first array element for each iteration in the main loop. As a result, we have performance regressions on platforms with slow misaligned memory accesses like Unmatched and Premier P550 SBCs.

Correctness test on linux-riscv64:
- [x] tier1 (TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCompactObjectHeaders") (release)
- [x] tier1 (TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:-UseCompactObjectHeaders") (release)
- [x] hotspot:tier1 (TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCompactObjectHeaders") (fastdebug)
- [x] hotspot:tier1 (TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:-UseCompactObjectHeaders") (fastdebug)

Performance test on Premier P550 (-XX:+UseParallelGC -XX:+AlwaysPreTouch -Xms8g -Xmx8g):

1. SPECjbb2005 Score Without Patch
1.1 -XX:-UseCompactObjectHeaders: 32666
1.2 -XX:+UseCompactObjectHeaders: 27610

2. SPECjbb2005 Score With Patch
2.1 -XX:-UseCompactObjectHeaders: 32820
2.2 -XX:+UseCompactObjectHeaders: 34179

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

Commit messages:
 - Add assertions
 - Comment
 - 8347489: RISC-V: Misaligned memory access with COH

Changes: https://git.openjdk.org/jdk/pull/23053/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23053&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8347489
  Stats: 123 lines in 3 files changed: 96 ins; 3 del; 24 mod
  Patch: https://git.openjdk.org/jdk/pull/23053.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23053/head:pull/23053

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


More information about the hotspot-compiler-dev mailing list