62 Mutex* ExpandHeap_lock = NULL; |
62 Mutex* ExpandHeap_lock = NULL; |
63 Mutex* AdapterHandlerLibrary_lock = NULL; |
63 Mutex* AdapterHandlerLibrary_lock = NULL; |
64 Mutex* SignatureHandlerLibrary_lock = NULL; |
64 Mutex* SignatureHandlerLibrary_lock = NULL; |
65 Mutex* VtableStubs_lock = NULL; |
65 Mutex* VtableStubs_lock = NULL; |
66 Mutex* SymbolArena_lock = NULL; |
66 Mutex* SymbolArena_lock = NULL; |
67 Mutex* StringTable_lock = NULL; |
|
68 Monitor* StringDedupQueue_lock = NULL; |
67 Monitor* StringDedupQueue_lock = NULL; |
69 Mutex* StringDedupTable_lock = NULL; |
68 Mutex* StringDedupTable_lock = NULL; |
70 Monitor* CodeCache_lock = NULL; |
69 Monitor* CodeCache_lock = NULL; |
71 Mutex* MethodData_lock = NULL; |
70 Mutex* MethodData_lock = NULL; |
72 Mutex* TouchedMethodLog_lock = NULL; |
71 Mutex* TouchedMethodLog_lock = NULL; |
146 #endif |
145 #endif |
147 Monitor* CodeHeapStateAnalytics_lock = NULL; |
146 Monitor* CodeHeapStateAnalytics_lock = NULL; |
148 |
147 |
149 Mutex* MetaspaceExpand_lock = NULL; |
148 Mutex* MetaspaceExpand_lock = NULL; |
150 Mutex* ClassLoaderDataGraph_lock = NULL; |
149 Mutex* ClassLoaderDataGraph_lock = NULL; |
151 Monitor* ThreadsSMRDelete_lock = NULL; |
150 Monitor* ThreadsSMRDelete_lock = NULL; |
152 Mutex* SharedDecoder_lock = NULL; |
151 Mutex* SharedDecoder_lock = NULL; |
153 Mutex* DCmdFactory_lock = NULL; |
152 Mutex* DCmdFactory_lock = NULL; |
|
153 #if INCLUDE_NMT |
|
154 Mutex* NMTQuery_lock = NULL; |
|
155 #endif |
154 |
156 |
155 #define MAX_NUM_MUTEX 128 |
157 #define MAX_NUM_MUTEX 128 |
156 static Monitor * _mutex_array[MAX_NUM_MUTEX]; |
158 static Monitor * _mutex_array[MAX_NUM_MUTEX]; |
157 static int _num_mutex; |
159 static int _num_mutex; |
158 |
160 |
253 def(VMStatistic_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); |
255 def(VMStatistic_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); |
254 def(ExpandHeap_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // Used during compilation by VM thread |
256 def(ExpandHeap_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // Used during compilation by VM thread |
255 def(JNIHandleBlockFreeList_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never); // handles are used by VM thread |
257 def(JNIHandleBlockFreeList_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never); // handles are used by VM thread |
256 def(SignatureHandlerLibrary_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); |
258 def(SignatureHandlerLibrary_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); |
257 def(SymbolArena_lock , PaddedMutex , leaf+2, true, Monitor::_safepoint_check_never); |
259 def(SymbolArena_lock , PaddedMutex , leaf+2, true, Monitor::_safepoint_check_never); |
258 def(StringTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); |
|
259 def(ProfilePrint_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing |
260 def(ProfilePrint_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing |
260 def(ExceptionCache_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing |
261 def(ExceptionCache_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing |
261 def(OsrList_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); |
262 def(OsrList_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); |
262 def(Debug1_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); |
263 def(Debug1_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); |
263 #ifndef PRODUCT |
264 #ifndef PRODUCT |
333 |
334 |
334 def(NMethodSweeperStats_lock , PaddedMutex , special, true, Monitor::_safepoint_check_sometimes); |
335 def(NMethodSweeperStats_lock , PaddedMutex , special, true, Monitor::_safepoint_check_sometimes); |
335 def(ThreadsSMRDelete_lock , PaddedMonitor, special, false, Monitor::_safepoint_check_never); |
336 def(ThreadsSMRDelete_lock , PaddedMonitor, special, false, Monitor::_safepoint_check_never); |
336 def(SharedDecoder_lock , PaddedMutex , native, false, Monitor::_safepoint_check_never); |
337 def(SharedDecoder_lock , PaddedMutex , native, false, Monitor::_safepoint_check_never); |
337 def(DCmdFactory_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); |
338 def(DCmdFactory_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); |
|
339 #if INCLUDE_NMT |
|
340 def(NMTQuery_lock , PaddedMutex , max_nonleaf, false, Monitor::_safepoint_check_always); |
|
341 #endif |
338 } |
342 } |
339 |
343 |
340 GCMutexLocker::GCMutexLocker(Monitor * mutex) { |
344 GCMutexLocker::GCMutexLocker(Monitor * mutex) { |
341 if (SafepointSynchronize::is_at_safepoint()) { |
345 if (SafepointSynchronize::is_at_safepoint()) { |
342 _locked = false; |
346 _locked = false; |