< prev index next >
src/hotspot/share/runtime/thread.cpp
Print this page
*** 969,979 ****
st->print(INTPTR_FORMAT, p2i(this)); // print address
}
#ifdef ASSERT
void Thread::print_owned_locks_on(outputStream* st) const {
! Monitor *cur = _owned_locks;
if (cur == NULL) {
st->print(" (no locks) ");
} else {
st->print_cr(" Locks owned:");
while (cur) {
--- 969,979 ----
st->print(INTPTR_FORMAT, p2i(this)); // print address
}
#ifdef ASSERT
void Thread::print_owned_locks_on(outputStream* st) const {
! Mutex* cur = _owned_locks;
if (cur == NULL) {
st->print(" (no locks) ");
} else {
st->print_cr(" Locks owned:");
while (cur) {
*** 1009,1019 ****
}
if (potential_vm_operation && !Universe::is_bootstrapping()) {
// Make sure we do not hold any locks that the VM thread also uses.
// This could potentially lead to deadlocks
! for (Monitor *cur = _owned_locks; cur; cur = cur->next()) {
// Threads_lock is special, since the safepoint synchronization will not start before this is
// acquired. Hence, a JavaThread cannot be holding it at a safepoint. So is VMOperationRequest_lock,
// since it is used to transfer control between JavaThreads and the VMThread
// Do not *exclude* any locks unless you are absolutely sure it is correct. Ask someone else first!
if ((cur->allow_vm_block() &&
--- 1009,1019 ----
}
if (potential_vm_operation && !Universe::is_bootstrapping()) {
// Make sure we do not hold any locks that the VM thread also uses.
// This could potentially lead to deadlocks
! for (Mutex* cur = _owned_locks; cur; cur = cur->next()) {
// Threads_lock is special, since the safepoint synchronization will not start before this is
// acquired. Hence, a JavaThread cannot be holding it at a safepoint. So is VMOperationRequest_lock,
// since it is used to transfer control between JavaThreads and the VMThread
// Do not *exclude* any locks unless you are absolutely sure it is correct. Ask someone else first!
if ((cur->allow_vm_block() &&
< prev index next >