46 Mutex* VMStatistic_lock = NULL;
47 Mutex* JNIGlobalAlloc_lock = NULL;
48 Mutex* JNIGlobalActive_lock = NULL;
49 Mutex* JNIWeakAlloc_lock = NULL;
50 Mutex* JNIWeakActive_lock = NULL;
51 Mutex* StringTableWeakAlloc_lock = NULL;
52 Mutex* StringTableWeakActive_lock = NULL;
53 Mutex* JNIHandleBlockFreeList_lock = NULL;
54 Mutex* VMWeakAlloc_lock = NULL;
55 Mutex* VMWeakActive_lock = NULL;
56 Mutex* ResolvedMethodTable_lock = NULL;
57 Mutex* JmethodIdCreation_lock = NULL;
58 Mutex* JfieldIdCreation_lock = NULL;
59 Monitor* JNICritical_lock = NULL;
60 Mutex* JvmtiThreadState_lock = NULL;
61 Monitor* Heap_lock = NULL;
62 Mutex* ExpandHeap_lock = NULL;
63 Mutex* AdapterHandlerLibrary_lock = NULL;
64 Mutex* SignatureHandlerLibrary_lock = NULL;
65 Mutex* VtableStubs_lock = NULL;
66 Mutex* SymbolTable_lock = NULL;
67 Mutex* StringTable_lock = NULL;
68 Monitor* StringDedupQueue_lock = NULL;
69 Mutex* StringDedupTable_lock = NULL;
70 Monitor* CodeCache_lock = NULL;
71 Mutex* MethodData_lock = NULL;
72 Mutex* TouchedMethodLog_lock = NULL;
73 Mutex* RetData_lock = NULL;
74 Monitor* VMOperationQueue_lock = NULL;
75 Monitor* VMOperationRequest_lock = NULL;
76 Monitor* Safepoint_lock = NULL;
77 Monitor* SerializePage_lock = NULL;
78 Monitor* Threads_lock = NULL;
79 Monitor* CGC_lock = NULL;
80 Monitor* STS_lock = NULL;
81 Monitor* FullGCCount_lock = NULL;
82 Mutex* SATB_Q_FL_lock = NULL;
83 Monitor* SATB_Q_CBL_mon = NULL;
84 Mutex* Shared_SATB_Q_lock = NULL;
85 Mutex* DirtyCardQ_FL_lock = NULL;
86 Monitor* DirtyCardQ_CBL_mon = NULL;
219 def(DerivedPointerTableGC_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
220 def(CGCPhaseManager_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_sometimes);
221 def(CodeCache_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
222 def(RawMonitor_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
223 def(OopMapCacheAlloc_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for oop_map_cache allocation.
224
225 def(MetaspaceExpand_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never);
226
227 def(Patching_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never); // used for safepointing and code patching.
228 def(Service_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // used for service thread operations
229 def(JmethodIdCreation_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for creating jmethodIDs.
230
231 def(SystemDictionary_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always); // lookups done by VM thread
232 def(SharedDictionary_lock , PaddedMutex, leaf, true, Monitor::_safepoint_check_always); // lookups done by VM thread
233 def(Module_lock , PaddedMutex , leaf+2, true, Monitor::_safepoint_check_always);
234 def(InlineCacheBuffer_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always);
235 def(VMStatistic_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always);
236 def(ExpandHeap_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // Used during compilation by VM thread
237 def(JNIHandleBlockFreeList_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); // handles are used by VM thread
238 def(SignatureHandlerLibrary_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always);
239 def(SymbolTable_lock , PaddedMutex , leaf+2, true, Monitor::_safepoint_check_always);
240 def(StringTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always);
241 def(ProfilePrint_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing
242 def(ExceptionCache_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing
243 def(OsrList_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
244 def(Debug1_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
245 #ifndef PRODUCT
246 def(FullGCALot_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // a lock to make FullGCALot MT safe
247 #endif
248 def(BeforeExit_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always);
249 def(PerfDataMemAlloc_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for allocating PerfData memory for performance data
250 def(PerfDataManager_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for synchronized access to PerfDataManager resources
251
252 // CMS_modUnionTable_lock leaf
253 // CMS_bitMap_lock leaf 1
254 // CMS_freeList_lock leaf 2
255
256 def(Safepoint_lock , PaddedMonitor, safepoint, true, Monitor::_safepoint_check_sometimes); // locks SnippetCache_lock/Threads_lock
257
258 def(Threads_lock , PaddedMonitor, barrier, true, Monitor::_safepoint_check_sometimes);
259
261 def(VMOperationRequest_lock , PaddedMonitor, nonleaf, true, Monitor::_safepoint_check_sometimes);
262 def(RetData_lock , PaddedMutex , nonleaf, false, Monitor::_safepoint_check_always);
263 def(Terminator_lock , PaddedMonitor, nonleaf, true, Monitor::_safepoint_check_sometimes);
264 def(VtableStubs_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always);
265 def(Notify_lock , PaddedMonitor, nonleaf, true, Monitor::_safepoint_check_always);
266 def(JNIGlobalAlloc_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_never);
267 def(JNIGlobalActive_lock , PaddedMutex , nonleaf-1, true, Monitor::_safepoint_check_never);
268 def(JNIWeakAlloc_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_never);
269 def(JNIWeakActive_lock , PaddedMutex , nonleaf-1, true, Monitor::_safepoint_check_never);
270 def(JNICritical_lock , PaddedMonitor, nonleaf, true, Monitor::_safepoint_check_always); // used for JNI critical regions
271 def(AdapterHandlerLibrary_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always);
272
273 def(Heap_lock , PaddedMonitor, nonleaf+1, false, Monitor::_safepoint_check_sometimes);
274 def(JfieldIdCreation_lock , PaddedMutex , nonleaf+1, true, Monitor::_safepoint_check_always); // jfieldID, Used in VM_Operation
275 def(ResolvedMethodTable_lock , PaddedMutex , nonleaf+1, false, Monitor::_safepoint_check_always); // Used to protect ResolvedMethodTable
276
277 def(CompiledIC_lock , PaddedMutex , nonleaf+2, false, Monitor::_safepoint_check_always); // locks VtableStubs_lock, InlineCacheBuffer_lock
278 def(CompileTaskAlloc_lock , PaddedMutex , nonleaf+2, true, Monitor::_safepoint_check_always);
279 def(CompileStatistics_lock , PaddedMutex , nonleaf+2, false, Monitor::_safepoint_check_always);
280 def(DirectivesStack_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
281 def(MultiArray_lock , PaddedMutex , nonleaf+2, false, Monitor::_safepoint_check_always); // locks SymbolTable_lock
282
283 def(JvmtiThreadState_lock , PaddedMutex , nonleaf+2, false, Monitor::_safepoint_check_always); // Used by JvmtiThreadState/JvmtiEventController
284 def(Management_lock , PaddedMutex , nonleaf+2, false, Monitor::_safepoint_check_always); // used for JVM management
285
286 def(Compile_lock , PaddedMutex , nonleaf+3, true, Monitor::_safepoint_check_sometimes);
287 def(MethodData_lock , PaddedMutex , nonleaf+3, false, Monitor::_safepoint_check_always);
288 def(TouchedMethodLog_lock , PaddedMutex , nonleaf+3, false, Monitor::_safepoint_check_always);
289
290 def(MethodCompileQueue_lock , PaddedMonitor, nonleaf+4, true, Monitor::_safepoint_check_always);
291 def(Debug2_lock , PaddedMutex , nonleaf+4, true, Monitor::_safepoint_check_never);
292 def(Debug3_lock , PaddedMutex , nonleaf+4, true, Monitor::_safepoint_check_never);
293 def(CompileThread_lock , PaddedMonitor, nonleaf+5, false, Monitor::_safepoint_check_always);
294 def(PeriodicTask_lock , PaddedMonitor, nonleaf+5, true, Monitor::_safepoint_check_sometimes);
295 def(RedefineClasses_lock , PaddedMonitor, nonleaf+5, true, Monitor::_safepoint_check_always);
296
297 def(ThreadHeapSampler_lock , PaddedMutex, nonleaf, false, Monitor::_safepoint_check_never);
298
299 if (WhiteBoxAPI) {
300 def(Compilation_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_never);
301 }
|
46 Mutex* VMStatistic_lock = NULL;
47 Mutex* JNIGlobalAlloc_lock = NULL;
48 Mutex* JNIGlobalActive_lock = NULL;
49 Mutex* JNIWeakAlloc_lock = NULL;
50 Mutex* JNIWeakActive_lock = NULL;
51 Mutex* StringTableWeakAlloc_lock = NULL;
52 Mutex* StringTableWeakActive_lock = NULL;
53 Mutex* JNIHandleBlockFreeList_lock = NULL;
54 Mutex* VMWeakAlloc_lock = NULL;
55 Mutex* VMWeakActive_lock = NULL;
56 Mutex* ResolvedMethodTable_lock = NULL;
57 Mutex* JmethodIdCreation_lock = NULL;
58 Mutex* JfieldIdCreation_lock = NULL;
59 Monitor* JNICritical_lock = NULL;
60 Mutex* JvmtiThreadState_lock = NULL;
61 Monitor* Heap_lock = NULL;
62 Mutex* ExpandHeap_lock = NULL;
63 Mutex* AdapterHandlerLibrary_lock = NULL;
64 Mutex* SignatureHandlerLibrary_lock = NULL;
65 Mutex* VtableStubs_lock = NULL;
66 Mutex* SymbolArena_lock = NULL;
67 Mutex* StringTable_lock = NULL;
68 Monitor* StringDedupQueue_lock = NULL;
69 Mutex* StringDedupTable_lock = NULL;
70 Monitor* CodeCache_lock = NULL;
71 Mutex* MethodData_lock = NULL;
72 Mutex* TouchedMethodLog_lock = NULL;
73 Mutex* RetData_lock = NULL;
74 Monitor* VMOperationQueue_lock = NULL;
75 Monitor* VMOperationRequest_lock = NULL;
76 Monitor* Safepoint_lock = NULL;
77 Monitor* SerializePage_lock = NULL;
78 Monitor* Threads_lock = NULL;
79 Monitor* CGC_lock = NULL;
80 Monitor* STS_lock = NULL;
81 Monitor* FullGCCount_lock = NULL;
82 Mutex* SATB_Q_FL_lock = NULL;
83 Monitor* SATB_Q_CBL_mon = NULL;
84 Mutex* Shared_SATB_Q_lock = NULL;
85 Mutex* DirtyCardQ_FL_lock = NULL;
86 Monitor* DirtyCardQ_CBL_mon = NULL;
219 def(DerivedPointerTableGC_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
220 def(CGCPhaseManager_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_sometimes);
221 def(CodeCache_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
222 def(RawMonitor_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
223 def(OopMapCacheAlloc_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for oop_map_cache allocation.
224
225 def(MetaspaceExpand_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never);
226
227 def(Patching_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never); // used for safepointing and code patching.
228 def(Service_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // used for service thread operations
229 def(JmethodIdCreation_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for creating jmethodIDs.
230
231 def(SystemDictionary_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always); // lookups done by VM thread
232 def(SharedDictionary_lock , PaddedMutex, leaf, true, Monitor::_safepoint_check_always); // lookups done by VM thread
233 def(Module_lock , PaddedMutex , leaf+2, true, Monitor::_safepoint_check_always);
234 def(InlineCacheBuffer_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always);
235 def(VMStatistic_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always);
236 def(ExpandHeap_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // Used during compilation by VM thread
237 def(JNIHandleBlockFreeList_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never); // handles are used by VM thread
238 def(SignatureHandlerLibrary_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always);
239 def(SymbolArena_lock , PaddedMutex , leaf+2, true, Monitor::_safepoint_check_never);
240 def(StringTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always);
241 def(ProfilePrint_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing
242 def(ExceptionCache_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing
243 def(OsrList_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
244 def(Debug1_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
245 #ifndef PRODUCT
246 def(FullGCALot_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // a lock to make FullGCALot MT safe
247 #endif
248 def(BeforeExit_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always);
249 def(PerfDataMemAlloc_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for allocating PerfData memory for performance data
250 def(PerfDataManager_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for synchronized access to PerfDataManager resources
251
252 // CMS_modUnionTable_lock leaf
253 // CMS_bitMap_lock leaf 1
254 // CMS_freeList_lock leaf 2
255
256 def(Safepoint_lock , PaddedMonitor, safepoint, true, Monitor::_safepoint_check_sometimes); // locks SnippetCache_lock/Threads_lock
257
258 def(Threads_lock , PaddedMonitor, barrier, true, Monitor::_safepoint_check_sometimes);
259
261 def(VMOperationRequest_lock , PaddedMonitor, nonleaf, true, Monitor::_safepoint_check_sometimes);
262 def(RetData_lock , PaddedMutex , nonleaf, false, Monitor::_safepoint_check_always);
263 def(Terminator_lock , PaddedMonitor, nonleaf, true, Monitor::_safepoint_check_sometimes);
264 def(VtableStubs_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always);
265 def(Notify_lock , PaddedMonitor, nonleaf, true, Monitor::_safepoint_check_always);
266 def(JNIGlobalAlloc_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_never);
267 def(JNIGlobalActive_lock , PaddedMutex , nonleaf-1, true, Monitor::_safepoint_check_never);
268 def(JNIWeakAlloc_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_never);
269 def(JNIWeakActive_lock , PaddedMutex , nonleaf-1, true, Monitor::_safepoint_check_never);
270 def(JNICritical_lock , PaddedMonitor, nonleaf, true, Monitor::_safepoint_check_always); // used for JNI critical regions
271 def(AdapterHandlerLibrary_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always);
272
273 def(Heap_lock , PaddedMonitor, nonleaf+1, false, Monitor::_safepoint_check_sometimes);
274 def(JfieldIdCreation_lock , PaddedMutex , nonleaf+1, true, Monitor::_safepoint_check_always); // jfieldID, Used in VM_Operation
275 def(ResolvedMethodTable_lock , PaddedMutex , nonleaf+1, false, Monitor::_safepoint_check_always); // Used to protect ResolvedMethodTable
276
277 def(CompiledIC_lock , PaddedMutex , nonleaf+2, false, Monitor::_safepoint_check_always); // locks VtableStubs_lock, InlineCacheBuffer_lock
278 def(CompileTaskAlloc_lock , PaddedMutex , nonleaf+2, true, Monitor::_safepoint_check_always);
279 def(CompileStatistics_lock , PaddedMutex , nonleaf+2, false, Monitor::_safepoint_check_always);
280 def(DirectivesStack_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
281 def(MultiArray_lock , PaddedMutex , nonleaf+2, false, Monitor::_safepoint_check_always);
282
283 def(JvmtiThreadState_lock , PaddedMutex , nonleaf+2, false, Monitor::_safepoint_check_always); // Used by JvmtiThreadState/JvmtiEventController
284 def(Management_lock , PaddedMutex , nonleaf+2, false, Monitor::_safepoint_check_always); // used for JVM management
285
286 def(Compile_lock , PaddedMutex , nonleaf+3, true, Monitor::_safepoint_check_sometimes);
287 def(MethodData_lock , PaddedMutex , nonleaf+3, false, Monitor::_safepoint_check_always);
288 def(TouchedMethodLog_lock , PaddedMutex , nonleaf+3, false, Monitor::_safepoint_check_always);
289
290 def(MethodCompileQueue_lock , PaddedMonitor, nonleaf+4, true, Monitor::_safepoint_check_always);
291 def(Debug2_lock , PaddedMutex , nonleaf+4, true, Monitor::_safepoint_check_never);
292 def(Debug3_lock , PaddedMutex , nonleaf+4, true, Monitor::_safepoint_check_never);
293 def(CompileThread_lock , PaddedMonitor, nonleaf+5, false, Monitor::_safepoint_check_always);
294 def(PeriodicTask_lock , PaddedMonitor, nonleaf+5, true, Monitor::_safepoint_check_sometimes);
295 def(RedefineClasses_lock , PaddedMonitor, nonleaf+5, true, Monitor::_safepoint_check_always);
296
297 def(ThreadHeapSampler_lock , PaddedMutex, nonleaf, false, Monitor::_safepoint_check_never);
298
299 if (WhiteBoxAPI) {
300 def(Compilation_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_never);
301 }
|