[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