On Mon, 28 Oct 2024 18:51:31 GMT, Dean Long <dl...@openjdk.org> wrote:

>> Its indeed difficult to see how the value is propagaged. I think it goes 
>> like this:
>> 
>> - read from the frame anchor and set as pc of `_last_frame`: 
>> https://github.com/pchilano/jdk/blob/66d5385f8a1c84e73cdbf385239089a7a9932a9e/src/hotspot/share/runtime/continuationFreezeThaw.cpp#L517
>> - copied to the result of `new_heap_frame`: 
>> https://github.com/pchilano/jdk/blob/66d5385f8a1c84e73cdbf385239089a7a9932a9e/src/hotspot/cpu/aarch64/continuationFreezeThaw_aarch64.inline.hpp#L99
>> - Written to the frame here: 
>> https://github.com/pchilano/jdk/blob/66d5385f8a1c84e73cdbf385239089a7a9932a9e/src/hotspot/cpu/aarch64/continuationFreezeThaw_aarch64.inline.hpp#L177
>> - Here it's done when freezing fast: 
>> https://github.com/pchilano/jdk/blob/66d5385f8a1c84e73cdbf385239089a7a9932a9e/src/hotspot/share/runtime/continuationFreezeThaw.cpp#L771
>
> Thanks, that's what I was missing.

Right, whatever address is in last_Java_pc is the one we are going to freeze 
for that frame, i.e. that's the address we are going to return to when 
resuming. For the freeze slow path this was already how it worked before this 
PR. For the fast path I added a case to correct the last pc that we freeze on 
preemption, as Richard pointed out in the last link, since otherwise we would 
freeze a different one. The idea is that if we already freeze the right pc, 
then on thaw we don't have to do anything. Note that when there are interpreter 
frames on the stack we always take the slow path.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21565#discussion_r1819595482

Reply via email to