RFR: 8317262: LockStack::contains(oop) fails "assert(t->is_Java_thread()) failed: incorrect cast to JavaThread"
Stefan Karlsson
stefank at openjdk.org
Thu Oct 5 08:44:09 UTC 2023
On Thu, 5 Oct 2023 01:47:03 GMT, David Holmes <dholmes at openjdk.org> wrote:
> Please review this simple fix to `LockStack::is_owning_thread()` that allows it to be called by a non-JavaThread. Thanks to @pchilano for the regression test.
>
> Testing:
> - new regression test
> - runtime/handshake/MixedHandshakeWalkStackTest.java
> - tiers 1-3 sanity
>
> Thanks
FWIW, there's a similar static function in sychronizer.cpp:
// Can be called from non JavaThreads (e.g., VMThread) for FastHashCode
// calculations as part of JVM/TI tagging.
static bool is_lock_owned(Thread* thread, oop obj) {
assert(LockingMode == LM_LIGHTWEIGHT, "only call this with new lightweight locking enabled");
return thread->is_Java_thread() ? JavaThread::cast(thread)->lock_stack().contains(obj) : false;
}
There might be an opportunity to combine/reuse/deduplicate this implementation.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/16047#issuecomment-1748390072
More information about the hotspot-runtime-dev
mailing list