154 if (SafepointSynchronize::is_at_safepoint()) return; |
154 if (SafepointSynchronize::is_at_safepoint()) return; |
155 if (!Universe::is_fully_initialized()) return; |
155 if (!Universe::is_fully_initialized()) return; |
156 // see if invoker of VM operation owns it |
156 // see if invoker of VM operation owns it |
157 VM_Operation* op = VMThread::vm_operation(); |
157 VM_Operation* op = VMThread::vm_operation(); |
158 if (op != NULL && op->calling_thread() == lock->owner()) return; |
158 if (op != NULL && op->calling_thread() == lock->owner()) return; |
159 fatal(err_msg("must own lock %s", lock->name())); |
159 fatal("must own lock %s", lock->name()); |
160 } |
160 } |
161 |
161 |
162 // a stronger assertion than the above |
162 // a stronger assertion than the above |
163 void assert_lock_strong(const Monitor * lock) { |
163 void assert_lock_strong(const Monitor * lock) { |
164 if (IgnoreLockingAssertions) return; |
164 if (IgnoreLockingAssertions) return; |
165 assert(lock != NULL, "Need non-NULL lock"); |
165 assert(lock != NULL, "Need non-NULL lock"); |
166 if (lock->owned_by_self()) return; |
166 if (lock->owned_by_self()) return; |
167 fatal(err_msg("must own lock %s", lock->name())); |
167 fatal("must own lock %s", lock->name()); |
168 } |
168 } |
169 #endif |
169 #endif |
170 |
170 |
171 #define def(var, type, pri, vm_block, safepoint_check_allowed ) { \ |
171 #define def(var, type, pri, vm_block, safepoint_check_allowed ) { \ |
172 var = new type(Mutex::pri, #var, vm_block, safepoint_check_allowed); \ |
172 var = new type(Mutex::pri, #var, vm_block, safepoint_check_allowed); \ |