RFR: 8324881: ObjectSynchronizer::inflate(Thread* current...) is invoked for non-current thread [v2]

Coleen Phillimore coleenp at openjdk.org
Tue Jan 30 16:17:47 UTC 2024


On Tue, 30 Jan 2024 15:33:50 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> src/hotspot/share/runtime/synchronizer.cpp line 1323:
>> 
>>> 1321:     locking_thread = JavaThread::cast(current);
>>> 1322:   }
>>> 1323:   return inflate(locking_thread, current, object, cause);
>> 
>> This looks strange passing locking_thread as nullptr.  Why not unconditionally make it current?  How can it ever be null?
>> 
>> edit: I see, it's guarded by is_lock_owned().  And you want "locking_thread" to be a JavaThread* not Thread* (another source of confusion).  This still looks odd.  Maybe locking_thread should be:
>> 
>> locking_thread = current->is_Java_thread() ? JavaThread::cast(current) : nullptr;
>> 
>> Then the LM_LEGACY path makes sense also?
>
> hm, LEGACY doesn't use locking_thread.

Maybe this would make more sense to me as Thread* current staying the first parameter, and the second parameter is fast_locking_thread which can be nullptr.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/17626#discussion_r1471456883


More information about the hotspot-dev mailing list