< 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 >