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