--- old/src/hotspot/share/runtime/biasedLocking.cpp 2019-09-12 13:13:05.758834840 +0200 +++ new/src/hotspot/share/runtime/biasedLocking.cpp 2019-09-12 13:13:05.468824739 +0200 @@ -726,7 +726,10 @@ assert(!obj->mark().has_bias_pattern(), "must not be biased"); } -void BiasedLocking::revoke_own_locks(Handle obj, TRAPS) { +void BiasedLocking::revoke_own_lock(Handle obj, TRAPS) { + assert(THREAD->is_Java_thread(), "must be called by a JavaThread"); + JavaThread* thread = (JavaThread*)THREAD; + markWord mark = obj->mark(); if (!mark.has_bias_pattern()) { @@ -734,14 +737,13 @@ } Klass *k = obj->klass(); - markWord prototype_header = k->prototype_header(); - assert(mark.biased_locker() == THREAD && - prototype_header.bias_epoch() == mark.bias_epoch(), "Revoke failed, unhandled biased lock state"); + assert(mark.biased_locker() == thread && + k->prototype_header().bias_epoch() == mark.bias_epoch(), "Revoke failed, unhandled biased lock state"); ResourceMark rm; log_info(biasedlocking)("Revoking bias by walking my own stack:"); EventBiasedLockSelfRevocation event; - BiasedLocking::walk_stack_and_revoke(obj(), (JavaThread*) THREAD); - ((JavaThread*) THREAD)->set_cached_monitor_info(NULL); + BiasedLocking::walk_stack_and_revoke(obj(), (JavaThread*) thread); + thread->set_cached_monitor_info(NULL); assert(!obj->mark().has_bias_pattern(), "invariant"); if (event.should_commit()) { post_self_revocation_event(&event, k);