On Mon, 30 Jan 2023 14:30:41 GMT, Roman Kennke <rken...@openjdk.org> wrote:

>> src/hotspot/share/runtime/synchronizer.cpp line 1336:
>> 
>>> 1334:         // Success! Return inflated monitor.
>>> 1335:         if (own) {
>>> 1336:           assert(current->is_Java_thread(), "must be: checked in 
>>> is_lock_owned()");
>> 
>> `is_lock_owned()` currently does this:
>> 
>> 
>> static bool is_lock_owned(Thread* thread, oop obj) {
>>   assert(UseFastLocking, "only call this with fast-locking enabled");
>>   return thread->is_Java_thread() ? 
>> reinterpret_cast<JavaThread*>(thread)->lock_stack().contains(obj) : false;
>> }
>> 
>> 
>> so I would not say "checked in is_locked_owned()" since `is_locked_owned()` 
>> does
>> not enforce that the caller is a JavaThread.
>
> If it's not a Java thread, `is_lock_owned()` returns `false`, and we wouldn't 
> end up in the `if (own)` branch.

Okay, I get it. `is_lock_owned()` only return `true` when called by a
JavaThread and if that JavaThread owns the monitor.

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

PR: https://git.openjdk.org/jdk/pull/10907

Reply via email to