< prev index next >
src/hotspot/share/runtime/biasedLocking.cpp
Print this page
@@ -666,11 +666,12 @@
// Caller should have instantiated a ResourceMark object before calling this method
void BiasedLocking::walk_stack_and_revoke(oop obj, JavaThread* biased_locker) {
assert(!SafepointSynchronize::is_at_safepoint() || !SafepointMechanism::uses_thread_local_poll(),
"if SafepointMechanism::uses_thread_local_poll() is enabled this should always be executed outside safepoints");
- assert(Thread::current() == biased_locker || Thread::current() == biased_locker->get_active_handshaker(), "wrong thread");
+ assert(Thread::current() == biased_locker || Thread::current() == biased_locker->get_active_handshaker() ||
+ Thread::current()->is_VM_thread(), "wrong thread");
markWord mark = obj->mark();
assert(mark.biased_locker() == biased_locker &&
obj->klass()->prototype_header().bias_epoch() == mark.bias_epoch(), "invariant");
< prev index next >