On Sat, 31 Aug 2024 06:52:56 GMT, Fei Yang <fy...@openjdk.org> wrote:

>> Yasumasa Suenaga has updated the pull request incrementally with two 
>> additional commits since the last revision:
>> 
>>  - Add testcase
>>  - Remove unnecessary comment from UpcallStub
>
> src/hotspot/cpu/x86/upcallLinker_x86_64.cpp line 397:
> 
>> 395:                           * and also should include both saved FP and 
>> return address
>> 396:                           */
>> 397:                          (frame_size / wordSize) + 2);
> 
> Hi, I witnessed build failures for other CPU ports. Shouldn't all the 
> callsites of `UpcallStub::create` be updated to reflect this change?

Good catch! I fixed all of caller of `UpcallStub::create`, and then they passed 
build test.
(This PR branch starts with `pr/`, so GHA did not start automatically. Thus I 
started it in manual.)

Test for this PR was kicked in serviceability test, and it works fine on both 
x86_64 and aarch64.
In RISC-V, GHA did not kick the test, but I believe it would work fine because 
stack structure is similar with x86_64 (return address and FP are seemed to 
store on the stack)

I'm not sure on s390 and PPC64.
In PPC64, I checked `UpcallLinker::make_upcall_stub`. It seems to push into the 
stack once as following, but I'm not sure.

  address start = __ function_entry(); // called by C
  __ save_LR_CR(R0);
  assert((abi._stack_alignment_bytes % 16) == 0, "must be 16 byte aligned");
  // allocate frame (frame_size is also aligned, so stack is still aligned)
  __ push_frame(frame_size, tmp);


s390 also pushes address into the stack, but SA does not have s390 
implementation, so we might be able to tackle this later when SA supports s390.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20789#discussion_r1739708623

Reply via email to