RFR: 8286301: Port JEP 425 to RISC-V

Fei Yang fyang at openjdk.org
Mon Oct 31 12:54:29 UTC 2022


Hi,

Please review this PR porting JEP 425 (Virtual Threads) to RISC-V.

This is mainly adapted from the work of AArch64 port. Most of the changes lie in RISC-V scope.
Changes to HotSpot shared code are trivial and are always guarded by RISCV64 macro. So this won't
affect the rest of the world in theory.

There exists some differences in frame structure between AArch64 and RISC-V.
For AArch64, we have:
enum {
  link_offset           = 0,
  return_addr_offset    = 1,
  sender_sp_offset      = 2
};

While for RISC-V, we have:
enum {
  link_offset           = -2,
  return_addr_offset    = -1,
  sender_sp_offset      =  0
};

So we need adapations in some places where the code relies on value of sender_sp_offset to work.
Implementation for Post-call NOPs optimization is not incorporated in this PR as we plan to evaluate
more on its impact on performance.

Testing on Linux-riscv64 HiFive Unmatched board:
  - minimal, client and server release & fastdebug build OK.
  - Passed tier1-tier4 tests (release build).
  - Passed jtreg tests under test/jdk/java/lang/Thread/virtual with extra JVM options: -XX:+VerifyContinuations -XX:+VerifyStack (fastdebug build).
  - Performed benchmark tests like Dacapo, SPECjvm2008, SPECjbb2015, etc. to make sure no performance regression are introduced (release build).

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

Commit messages:
 - 8286301: JEP 425 to RISC-V

Changes: https://git.openjdk.org/jdk/pull/10917/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10917&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8286301
  Stats: 1260 lines in 30 files changed: 1008 ins; 82 del; 170 mod
  Patch: https://git.openjdk.org/jdk/pull/10917.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10917/head:pull/10917

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


More information about the hotspot-dev mailing list