37 // Instead of using pointers to malloc()ed monitors and mutexes we should consider |
37 // Instead of using pointers to malloc()ed monitors and mutexes we should consider |
38 // eliminating the indirection and using instances instead. |
38 // eliminating the indirection and using instances instead. |
39 // Consider using GCC's __read_mostly. |
39 // Consider using GCC's __read_mostly. |
40 |
40 |
41 Mutex* Patching_lock = NULL; |
41 Mutex* Patching_lock = NULL; |
|
42 Mutex* CompiledMethod_lock = NULL; |
42 Monitor* SystemDictionary_lock = NULL; |
43 Monitor* SystemDictionary_lock = NULL; |
43 Mutex* ProtectionDomainSet_lock = NULL; |
44 Mutex* ProtectionDomainSet_lock = NULL; |
44 Mutex* SharedDictionary_lock = NULL; |
45 Mutex* SharedDictionary_lock = NULL; |
45 Mutex* Module_lock = NULL; |
46 Mutex* Module_lock = NULL; |
46 Mutex* CompiledIC_lock = NULL; |
47 Mutex* CompiledIC_lock = NULL; |
91 Monitor* InitCompleted_lock = NULL; |
92 Monitor* InitCompleted_lock = NULL; |
92 Monitor* BeforeExit_lock = NULL; |
93 Monitor* BeforeExit_lock = NULL; |
93 Monitor* Notify_lock = NULL; |
94 Monitor* Notify_lock = NULL; |
94 Mutex* ProfilePrint_lock = NULL; |
95 Mutex* ProfilePrint_lock = NULL; |
95 Mutex* ExceptionCache_lock = NULL; |
96 Mutex* ExceptionCache_lock = NULL; |
96 Mutex* OsrList_lock = NULL; |
|
97 Mutex* NMethodSweeperStats_lock = NULL; |
97 Mutex* NMethodSweeperStats_lock = NULL; |
98 #ifndef PRODUCT |
98 #ifndef PRODUCT |
99 Mutex* FullGCALot_lock = NULL; |
99 Mutex* FullGCALot_lock = NULL; |
100 #endif |
100 #endif |
101 |
101 |
231 |
231 |
232 def(MetaspaceExpand_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never); |
232 def(MetaspaceExpand_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never); |
233 def(ClassLoaderDataGraph_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always); |
233 def(ClassLoaderDataGraph_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always); |
234 |
234 |
235 def(Patching_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never); // used for safepointing and code patching. |
235 def(Patching_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never); // used for safepointing and code patching. |
|
236 def(CompiledMethod_lock , PaddedMutex , special-1, true, Monitor::_safepoint_check_never); |
236 def(Service_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // used for service thread operations |
237 def(Service_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // used for service thread operations |
237 def(JmethodIdCreation_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for creating jmethodIDs. |
238 def(JmethodIdCreation_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for creating jmethodIDs. |
238 |
239 |
239 def(SystemDictionary_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always); |
240 def(SystemDictionary_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always); |
240 def(ProtectionDomainSet_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never); |
241 def(ProtectionDomainSet_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never); |
246 def(JNIHandleBlockFreeList_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never); // handles are used by VM thread |
247 def(JNIHandleBlockFreeList_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never); // handles are used by VM thread |
247 def(SignatureHandlerLibrary_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); |
248 def(SignatureHandlerLibrary_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); |
248 def(SymbolArena_lock , PaddedMutex , leaf+2, true, Monitor::_safepoint_check_never); |
249 def(SymbolArena_lock , PaddedMutex , leaf+2, true, Monitor::_safepoint_check_never); |
249 def(ProfilePrint_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing |
250 def(ProfilePrint_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing |
250 def(ExceptionCache_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing |
251 def(ExceptionCache_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing |
251 def(OsrList_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); |
|
252 def(Debug1_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); |
252 def(Debug1_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); |
253 #ifndef PRODUCT |
253 #ifndef PRODUCT |
254 def(FullGCALot_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // a lock to make FullGCALot MT safe |
254 def(FullGCALot_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // a lock to make FullGCALot MT safe |
255 #endif |
255 #endif |
256 def(BeforeExit_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always); |
256 def(BeforeExit_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always); |