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