< prev index next >

src/share/vm/classfile/systemDictionary.cpp

Print this page

        

*** 496,506 **** assert_lock_strong(SystemDictionary_lock); 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); --- 496,506 ---- assert_lock_strong(SystemDictionary_lock); bool calledholdinglock = ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD, lockObject); assert(calledholdinglock,"must hold lock for notify"); ! assert((!(oopDesc::bs()->write_barrier(lockObject()) == oopDesc::bs()->write_barrier(_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);
*** 1529,1541 **** return k; } Handle SystemDictionary::compute_loader_lock_object(Handle class_loader, TRAPS) { // If class_loader is NULL we synchronize on _system_loader_lock_obj if (class_loader.is_null()) { ! return Handle(THREAD, _system_loader_lock_obj); } else { ! return class_loader; } } // This method is added to check how often we have to wait to grab loader // lock. The results are being recorded in the performance counters defined in --- 1529,1541 ---- return k; } Handle SystemDictionary::compute_loader_lock_object(Handle class_loader, TRAPS) { // If class_loader is NULL we synchronize on _system_loader_lock_obj if (class_loader.is_null()) { ! return Handle(THREAD, oopDesc::bs()->write_barrier(_system_loader_lock_obj)); } else { ! return Handle(THREAD, oopDesc::bs()->write_barrier(class_loader())); } } // This method is added to check how often we have to wait to grab loader // lock. The results are being recorded in the performance counters defined in
*** 1550,1560 **** if (ObjectSynchronizer::query_lock_ownership((JavaThread*)THREAD, loader_lock) == ObjectSynchronizer::owner_other) { // contention will likely happen, so increment the corresponding // contention counter. ! if (loader_lock() == _system_loader_lock_obj) { ClassLoader::sync_systemLoaderLockContentionRate()->inc(); } else { ClassLoader::sync_nonSystemLoaderLockContentionRate()->inc(); } } --- 1550,1560 ---- if (ObjectSynchronizer::query_lock_ownership((JavaThread*)THREAD, loader_lock) == ObjectSynchronizer::owner_other) { // contention will likely happen, so increment the corresponding // contention counter. ! if (oopDesc::bs()->write_barrier(loader_lock()) == oopDesc::bs()->write_barrier(_system_loader_lock_obj)) { ClassLoader::sync_systemLoaderLockContentionRate()->inc(); } else { ClassLoader::sync_nonSystemLoaderLockContentionRate()->inc(); } }
*** 2677,2682 **** class_loader->klass() : (Klass*)NULL); event.commit(); } #endif // INCLUDE_TRACE } - --- 2677,2681 ----
< prev index next >