[jdk19] RFR: 8289091: move oop safety check from SharedRuntime::get_java_tid() to JavaThread::threadObj() [v3]

Daniel D. Daugherty dcubed at openjdk.org
Wed Jun 29 18:26:36 UTC 2022


On Wed, 29 Jun 2022 02:43:29 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> Daniel D. Daugherty has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   dholmes CR - use Thread::current() instead of Thread::current_or_null().
>
> src/hotspot/share/runtime/thread.cpp line 2153:
> 
>> 2151:   if (!current->is_Java_thread() || JavaThread::cast(current)->is_oop_safe()) {
>> 2152:     // Only access threadObj() if current thread is not a JavaThread
>> 2153:     // or if it is a JavaThread that can safely access oops.
> 
> How can a non-JavaThread safely access the oop? Is the only safe case the VMThread at a safepoint?

The purpose of the `if (!current->is_Java_thread() ||` part of the if-statement
is to allow the code to work as it did before for the non-JavaThread case. Before
this fix, if a non-JavaThread called into this code, then it was allowed to execute
this code. I've preserved that behavior and I've see no failures that indicate that
this is a problem.

Do I know what non-JavaThreads might wander in here? No I don't.

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

PR: https://git.openjdk.org/jdk19/pull/69


More information about the hotspot-runtime-dev mailing list