RFR: 8300197: Freeze/thaw an interpreter frame using a single copy_to_chunk() call [v3]

Fredrik Bredberg duke at openjdk.org
Wed Apr 26 14:46:00 UTC 2023


> On certain architectures (like AARCH64) padding may be inserted between the locals and the rest of the stack frame in order to keep the frame pointer 16-byte-aligned.
> 
> This padding is currently not freezed, instead freezing of a single interpreter stack frame is done using two separate copy_to_chunk() calls (see recurse_freeze_interpreted_frame). Likewise, thawing is done using two separate copy_from_chunk() calls.
> 
> This poses a bit of a problem when trying to relativize stack addresses in interpreter frames ([JDK-8289296](https://bugs.openjdk.org/browse/JDK-8289296)). Since relative offsets may need to be changed during freezing and thawing.
> 
> By both freezing and thawing the padding we remove the need to change any relative offsets in runtime.
> 
> Tested tier1-tier8 on supported platforms, found no new issues. PowerPC and RISC-V was sanity tested using Qemu.

Fredrik Bredberg has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:

 - Put back assert in recurse_thaw_interpreted_frame
 - Merge branch 'master' into freeze_thaw_interpreter_JDK-8300197_2023-01-19
 - Updated after review
 - 8300197: Freeze/thaw an interpreter frame using a single copy_to_chunk() call

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/13477/files
  - new: https://git.openjdk.org/jdk/pull/13477/files/3b4c0fa3..8de6a1f7

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=13477&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=13477&range=01-02

  Stats: 252588 lines in 1747 files changed: 233939 ins; 8300 del; 10349 mod
  Patch: https://git.openjdk.org/jdk/pull/13477.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13477/head:pull/13477

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


More information about the hotspot-dev mailing list