< prev index next >

src/share/vm/classfile/systemDictionary.cpp

Print this page

        

*** 494,507 **** bool calledholdinglock = ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD, lockObject); assert(calledholdinglock,"must hold lock for notify"); assert((!(lockObject() == _system_loader_lock_obj) && !is_parallelCapable(lockObject)), "unexpected double_lock_wait"); ObjectSynchronizer::notifyall(lockObject, THREAD); ! intptr_t recursions = ObjectSynchronizer::complete_exit(lockObject, THREAD); SystemDictionary_lock->wait(); SystemDictionary_lock->unlock(); ! ObjectSynchronizer::reenter(lockObject, recursions, THREAD); SystemDictionary_lock->lock(); } // If the class in is in the placeholder table, class loading is in progress // For cases where the application changes threads to load classes, it --- 494,508 ---- bool calledholdinglock = ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD, lockObject); assert(calledholdinglock,"must hold lock for notify"); assert((!(lockObject() == _system_loader_lock_obj) && !is_parallelCapable(lockObject)), "unexpected double_lock_wait"); ObjectSynchronizer::notifyall(lockObject, THREAD); ! intptr_t saved_recursions, saved_trace_exit_stack; ! ObjectSynchronizer::complete_exit(lockObject, &saved_recursions, &saved_trace_exit_stack, THREAD); SystemDictionary_lock->wait(); SystemDictionary_lock->unlock(); ! ObjectSynchronizer::reenter(lockObject, saved_recursions, saved_trace_exit_stack, THREAD); SystemDictionary_lock->lock(); } // If the class in is in the placeholder table, class loading is in progress // For cases where the application changes threads to load classes, it
< prev index next >