RFR(s): 8252414: Redundant suspend check when determining if a java thread is safe

Daniel D. Daugherty daniel.daugherty at oracle.com
Thu Aug 27 23:14:31 UTC 2020


On 8/27/20 3:21 AM, Robbin Ehn wrote:
> Hi all, please review.
>
> In 8221207 - "Redo JDK-8218446 - SuspendAtExit hangs" we fixed so a
> thread is always blocked when suspended.
>
> And added this nice assert.
> int JavaThread::java_suspend_self() {
>   assert(thread_state() == _thread_blocked, "wrong state for 
> java_suspend_self()");
>
> When checking if a thread is safepoint/handshake safe there no need to 
> look at ext suspend flag anymore, since the thread is blocked.
>
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8252414
> Code:
> http://cr.openjdk.java.net/~rehn/8252414/webrev/index.html

Sorry for the delay. I had to go back and reread the
"8221207: Redo JDK-8218446 - SuspendAtExit hangs" review thread.


src/hotspot/share/runtime/handshake.cpp
     No comments.

src/hotspot/share/runtime/safepoint.cpp
     No comments.

> When checking if a thread is safepoint/handshake safe there no need to
> look at ext suspend flag anymore, since the thread is blocked. 

I wouldn't quite phrase it that way. We consider a thread to
be is_ext_suspended() when it's running native code also. In
that case, it is _thread_in_native, but if it should happen
to return from native then we'll catch it in
JavaThread::java_suspend_self_with_safepoint_check() so it
will become properly blocked.

Thumbs up!

Dan


>
> Passes t1-5
>
> Thanks, Robbin



More information about the hotspot-runtime-dev mailing list