538 bool calledholdinglock |
538 bool calledholdinglock |
539 = ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD, lockObject); |
539 = ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD, lockObject); |
540 assert(calledholdinglock,"must hold lock for notify"); |
540 assert(calledholdinglock,"must hold lock for notify"); |
541 assert((lockObject() != _system_loader_lock_obj && !is_parallelCapable(lockObject)), "unexpected double_lock_wait"); |
541 assert((lockObject() != _system_loader_lock_obj && !is_parallelCapable(lockObject)), "unexpected double_lock_wait"); |
542 ObjectSynchronizer::notifyall(lockObject, THREAD); |
542 ObjectSynchronizer::notifyall(lockObject, THREAD); |
543 intptr_t recursions = ObjectSynchronizer::complete_exit(lockObject, THREAD); |
543 intx recursions = ObjectSynchronizer::complete_exit(lockObject, THREAD); |
544 SystemDictionary_lock->wait(); |
544 SystemDictionary_lock->wait(); |
545 SystemDictionary_lock->unlock(); |
545 SystemDictionary_lock->unlock(); |
546 ObjectSynchronizer::reenter(lockObject, recursions, THREAD); |
546 ObjectSynchronizer::reenter(lockObject, recursions, THREAD); |
547 SystemDictionary_lock->lock(); |
547 SystemDictionary_lock->lock(); |
548 } |
548 } |