On Tue, 20 Oct 2020 02:28:35 GMT, David Holmes <dhol...@openjdk.org> wrote:

>> The main point of this change-set is to make it easier to implement S/R on 
>> top of handshakes.
>> Which is a prerequisite for removing _suspend_flag (which duplicates the 
>> handshake functionality).
>> But we also remove some complicated S/R methods.
>> 
>> We basically just put in everything in the handshake closure, so the diff 
>> just looks much worse than what it is.
>> 
>> TraceSuspendDebugBits have an ifdef, but in both cases it now just returns.
>> But I was unsure if I should remove now or when is_ext_suspend_completed() 
>> is removed.
>> 
>> Passes multiple t1-5 runs, locally it passes many 
>> jck:vm/nsk_jvmti/nsk_jdi/jdk-jdi runs.
>
> Hi Robbin,
> 
> IIUC the "waiting" part of `wait_for_ext_suspend_completion` is now 
> implicitly handled in the handshake - correct?
> 
> Overall this seems like a great simplification.
> 
> A few minor comments below.
> 
> Thanks,
> David

Hi David, thanks for having a look.

> Hi Robbin,
> 
> IIUC the "waiting" part of `wait_for_ext_suspend_completion` is now 
> implicitly handled in the handshake - correct?

A suspended Java thread may never transition back to java, never execute any 
more bytecodes.
The old 'fully' suspended gives more guarantees which we need to do some 
operations.
When we are in a handshake, the handshake gives us those guarantees, so it is 
enough that thread is considered
suspended.

So the answer is we wait until we are allowed to execute those operations 
(thread handshake safe), which is not
identical with fully suspended. But fully suspended is an implementation 
detail, the agent only knows about suspended.

> 
> Overall this seems like a great simplification.
> 
> A few minor comments below.
> 
> Thanks,
> David

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

PR: https://git.openjdk.java.net/jdk/pull/729

Reply via email to