130 Mutex* HotCardCache_lock = NULL; |
130 Mutex* HotCardCache_lock = NULL; |
131 |
131 |
132 Monitor* GCTaskManager_lock = NULL; |
132 Monitor* GCTaskManager_lock = NULL; |
133 |
133 |
134 Mutex* Management_lock = NULL; |
134 Mutex* Management_lock = NULL; |
135 Monitor* Service_lock = NULL; |
135 Monitor* Service_lock = NULL; |
|
136 Mutex* Stacktrace_lock = NULL; |
|
137 |
|
138 Monitor* JfrQuery_lock = NULL; |
|
139 Monitor* JfrMsg_lock = NULL; |
|
140 Mutex* JfrBuffer_lock = NULL; |
|
141 Mutex* JfrStream_lock = NULL; |
136 |
142 |
137 #define MAX_NUM_MUTEX 128 |
143 #define MAX_NUM_MUTEX 128 |
138 static Monitor * _mutex_array[MAX_NUM_MUTEX]; |
144 static Monitor * _mutex_array[MAX_NUM_MUTEX]; |
139 static int _num_mutex; |
145 static int _num_mutex; |
140 |
146 |
205 def(OopMapCacheAlloc_lock , Mutex, leaf, true ); // used for oop_map_cache allocation. |
211 def(OopMapCacheAlloc_lock , Mutex, leaf, true ); // used for oop_map_cache allocation. |
206 |
212 |
207 def(Patching_lock , Mutex , special, true ); // used for safepointing and code patching. |
213 def(Patching_lock , Mutex , special, true ); // used for safepointing and code patching. |
208 def(ObjAllocPost_lock , Monitor, special, false); |
214 def(ObjAllocPost_lock , Monitor, special, false); |
209 def(Service_lock , Monitor, special, true ); // used for service thread operations |
215 def(Service_lock , Monitor, special, true ); // used for service thread operations |
|
216 def(Stacktrace_lock , Mutex, special, true ); // used for JFR stacktrace database |
210 def(JmethodIdCreation_lock , Mutex , leaf, true ); // used for creating jmethodIDs. |
217 def(JmethodIdCreation_lock , Mutex , leaf, true ); // used for creating jmethodIDs. |
211 |
218 |
212 def(SystemDictionary_lock , Monitor, leaf, true ); // lookups done by VM thread |
219 def(SystemDictionary_lock , Monitor, leaf, true ); // lookups done by VM thread |
213 def(PackageTable_lock , Mutex , leaf, false); |
220 def(PackageTable_lock , Mutex , leaf, false); |
214 def(InlineCacheBuffer_lock , Mutex , leaf, true ); |
221 def(InlineCacheBuffer_lock , Mutex , leaf, true ); |
269 def(MethodCompileQueue_lock , Monitor, nonleaf+4, true ); |
276 def(MethodCompileQueue_lock , Monitor, nonleaf+4, true ); |
270 def(Debug2_lock , Mutex , nonleaf+4, true ); |
277 def(Debug2_lock , Mutex , nonleaf+4, true ); |
271 def(Debug3_lock , Mutex , nonleaf+4, true ); |
278 def(Debug3_lock , Mutex , nonleaf+4, true ); |
272 def(ProfileVM_lock , Monitor, nonleaf+4, false); // used for profiling of the VMThread |
279 def(ProfileVM_lock , Monitor, nonleaf+4, false); // used for profiling of the VMThread |
273 def(CompileThread_lock , Monitor, nonleaf+5, false ); |
280 def(CompileThread_lock , Monitor, nonleaf+5, false ); |
|
281 |
|
282 def(JfrQuery_lock , Monitor, nonleaf, true); // JFR locks, keep these in consecutive order |
|
283 def(JfrMsg_lock , Monitor, nonleaf+2, true); |
|
284 def(JfrBuffer_lock , Mutex, nonleaf+3, true); |
|
285 def(JfrStream_lock , Mutex, nonleaf+4, true); |
274 } |
286 } |
275 |
287 |
276 GCMutexLocker::GCMutexLocker(Monitor * mutex) { |
288 GCMutexLocker::GCMutexLocker(Monitor * mutex) { |
277 if (SafepointSynchronize::is_at_safepoint()) { |
289 if (SafepointSynchronize::is_at_safepoint()) { |
278 _locked = false; |
290 _locked = false; |