RFR: 8300197: Freeze/thaw an interpreter frame using a single copy_to_chunk() call
Andrew Haley
aph at openjdk.org
Tue Apr 18 12:03:45 UTC 2023
On Fri, 14 Apr 2023 13:45:12 GMT, Fredrik Bredberg <duke at openjdk.org> wrote:
> 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.
src/hotspot/cpu/aarch64/continuationFreezeThaw_aarch64.inline.hpp line 149:
> 147: // on AARCH64, we may insert padding between the locals and the rest of the frame
> 148: // (see TemplateInterpreterGenerator::generate_normal_entry, and AbstractInterpreter::layout_activation)
> 149: // since we freeze the padding word (see recurse_freeze_interpreted_frame) in order to keep the same relativized
Suggestion:
// because we freeze the padding word (see recurse_freeze_interpreted_frame) in order to keep the same relativized
... for clarity.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13477#discussion_r1169926915
More information about the hotspot-dev
mailing list