On Mon, 19 Oct 2020 09:59:34 GMT, Robbin Ehn <r...@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

src/hotspot/share/runtime/thread.cpp line 579:

> 577:     // That trace is very chatty.
> 578:     return;
> 579: #else

Without the !is_wait check none of the code below line 583 is reachable now. I 
would remove this now.

src/hotspot/share/prims/jvmtiEnv.cpp line 1648:

> 1646:     op.doit(java_thread, true);
> 1647:   } else {
> 1648:     Handshake::execute(&op, java_thread);

This pattern is repeated a lot - we should be able to incorporate it into the 
op itself by passing in `java_thread`.

src/hotspot/share/prims/jvmtiEnvBase.cpp line 1525:

> 1523:   Thread* current_thread  = Thread::current();
> 1524:   HandleMark hm(current_thread);
> 1525:   JavaThread* java_thread = target->as_Java_thread();

Contrast with the same three lines at L1390 - we should use the same 
boilerplate in each `doit`. And ideally refactor
into some shared code somewhere (future RFE).

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

Marked as reviewed by dholmes (Reviewer).

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

Reply via email to