66 Mutex* ExpandHeap_lock = NULL;
67 Mutex* AdapterHandlerLibrary_lock = NULL;
68 Mutex* SignatureHandlerLibrary_lock = NULL;
69 Mutex* VtableStubs_lock = NULL;
70 Mutex* SymbolArena_lock = NULL;
71 Monitor* StringDedupQueue_lock = NULL;
72 Mutex* StringDedupTable_lock = NULL;
73 Monitor* CodeCache_lock = NULL;
74 Mutex* MethodData_lock = NULL;
75 Mutex* TouchedMethodLog_lock = NULL;
76 Mutex* RetData_lock = NULL;
77 Monitor* VMOperationQueue_lock = NULL;
78 Monitor* VMOperationRequest_lock = NULL;
79 Monitor* SerializePage_lock = NULL;
80 Monitor* Threads_lock = NULL;
81 Mutex* NonJavaThreadsList_lock = NULL;
82 Mutex* NonJavaThreadsListSync_lock = NULL;
83 Monitor* CGC_lock = NULL;
84 Monitor* STS_lock = NULL;
85 Monitor* FullGCCount_lock = NULL;
86 Monitor* SATB_Q_CBL_mon = NULL;
87 Monitor* DirtyCardQ_CBL_mon = NULL;
88 Mutex* Shared_DirtyCardQ_lock = NULL;
89 Mutex* MarkStackFreeList_lock = NULL;
90 Mutex* MarkStackChunkList_lock = NULL;
91 Mutex* MonitoringSupport_lock = NULL;
92 Mutex* ParGCRareEvent_lock = NULL;
93 Monitor* CGCPhaseManager_lock = NULL;
94 Mutex* Compile_lock = NULL;
95 Monitor* MethodCompileQueue_lock = NULL;
96 Monitor* CompileThread_lock = NULL;
97 Monitor* Compilation_lock = NULL;
98 Mutex* CompileTaskAlloc_lock = NULL;
99 Mutex* CompileStatistics_lock = NULL;
100 Mutex* DirectivesStack_lock = NULL;
101 Mutex* MultiArray_lock = NULL;
102 Monitor* Terminator_lock = NULL;
103 Monitor* InitCompleted_lock = NULL;
104 Monitor* BeforeExit_lock = NULL;
105 Monitor* Notify_lock = NULL;
106 Mutex* ProfilePrint_lock = NULL;
212 }
213
214 // Using Padded subclasses to prevent false sharing of these global monitors and mutexes.
215 void mutex_init() {
216 def(tty_lock , PaddedMutex , tty, true, Monitor::_safepoint_check_never); // allow to lock in VM
217
218 def(CGC_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // coordinate between fore- and background GC
219 def(STS_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
220
221 def(VMWeakAlloc_lock , PaddedMutex , vmweak, true, Monitor::_safepoint_check_never);
222 def(VMWeakActive_lock , PaddedMutex , vmweak-1, true, Monitor::_safepoint_check_never);
223
224 def(StringTableWeakAlloc_lock , PaddedMutex , vmweak, true, Monitor::_safepoint_check_never);
225 def(StringTableWeakActive_lock , PaddedMutex , vmweak-1, true, Monitor::_safepoint_check_never);
226
227 def(ResolvedMethodTableWeakAlloc_lock , PaddedMutex , vmweak, true, Monitor::_safepoint_check_never);
228 def(ResolvedMethodTableWeakActive_lock , PaddedMutex , vmweak-1, true, Monitor::_safepoint_check_never);
229
230 def(FullGCCount_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never); // in support of ExplicitGCInvokesConcurrent
231 if (UseG1GC) {
232 def(SATB_Q_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never);
233
234 def(DirtyCardQ_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never);
235 def(Shared_DirtyCardQ_lock , PaddedMutex , access + 1, true, Monitor::_safepoint_check_never);
236
237 def(FreeList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
238 def(OldSets_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
239 def(RootRegionScan_lock , PaddedMonitor, leaf , true, Monitor::_safepoint_check_never);
240
241 def(StringDedupQueue_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
242 def(StringDedupTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
243
244 def(MarkStackFreeList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
245 def(MarkStackChunkList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
246
247 def(MonitoringSupport_lock , PaddedMutex , native , true, Monitor::_safepoint_check_never); // used for serviceability monitoring support
248 }
249 if (UseShenandoahGC) {
250 def(SATB_Q_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never);
251
252 def(StringDedupQueue_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
253 def(StringDedupTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
254 }
255 def(ParGCRareEvent_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_always);
256 def(CGCPhaseManager_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_always);
257 def(CodeCache_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
258 def(RawMonitor_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
259 def(OopMapCacheAlloc_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for oop_map_cache allocation.
260
261 def(MetaspaceExpand_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never);
262 def(ClassLoaderDataGraph_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always);
263
264 def(Patching_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never); // used for safepointing and code patching.
265 def(OsrList_lock , PaddedMutex , special-1, true, Monitor::_safepoint_check_never);
266 def(CompiledMethod_lock , PaddedMutex , special-1, true, Monitor::_safepoint_check_never);
267 def(Service_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // used for service thread operations
268 def(JmethodIdCreation_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for creating jmethodIDs.
269
270 def(SystemDictionary_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always);
271 def(ProtectionDomainSet_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never);
|
66 Mutex* ExpandHeap_lock = NULL;
67 Mutex* AdapterHandlerLibrary_lock = NULL;
68 Mutex* SignatureHandlerLibrary_lock = NULL;
69 Mutex* VtableStubs_lock = NULL;
70 Mutex* SymbolArena_lock = NULL;
71 Monitor* StringDedupQueue_lock = NULL;
72 Mutex* StringDedupTable_lock = NULL;
73 Monitor* CodeCache_lock = NULL;
74 Mutex* MethodData_lock = NULL;
75 Mutex* TouchedMethodLog_lock = NULL;
76 Mutex* RetData_lock = NULL;
77 Monitor* VMOperationQueue_lock = NULL;
78 Monitor* VMOperationRequest_lock = NULL;
79 Monitor* SerializePage_lock = NULL;
80 Monitor* Threads_lock = NULL;
81 Mutex* NonJavaThreadsList_lock = NULL;
82 Mutex* NonJavaThreadsListSync_lock = NULL;
83 Monitor* CGC_lock = NULL;
84 Monitor* STS_lock = NULL;
85 Monitor* FullGCCount_lock = NULL;
86 Monitor* DirtyCardQ_CBL_mon = NULL;
87 Mutex* Shared_DirtyCardQ_lock = NULL;
88 Mutex* MarkStackFreeList_lock = NULL;
89 Mutex* MarkStackChunkList_lock = NULL;
90 Mutex* MonitoringSupport_lock = NULL;
91 Mutex* ParGCRareEvent_lock = NULL;
92 Monitor* CGCPhaseManager_lock = NULL;
93 Mutex* Compile_lock = NULL;
94 Monitor* MethodCompileQueue_lock = NULL;
95 Monitor* CompileThread_lock = NULL;
96 Monitor* Compilation_lock = NULL;
97 Mutex* CompileTaskAlloc_lock = NULL;
98 Mutex* CompileStatistics_lock = NULL;
99 Mutex* DirectivesStack_lock = NULL;
100 Mutex* MultiArray_lock = NULL;
101 Monitor* Terminator_lock = NULL;
102 Monitor* InitCompleted_lock = NULL;
103 Monitor* BeforeExit_lock = NULL;
104 Monitor* Notify_lock = NULL;
105 Mutex* ProfilePrint_lock = NULL;
211 }
212
213 // Using Padded subclasses to prevent false sharing of these global monitors and mutexes.
214 void mutex_init() {
215 def(tty_lock , PaddedMutex , tty, true, Monitor::_safepoint_check_never); // allow to lock in VM
216
217 def(CGC_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // coordinate between fore- and background GC
218 def(STS_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
219
220 def(VMWeakAlloc_lock , PaddedMutex , vmweak, true, Monitor::_safepoint_check_never);
221 def(VMWeakActive_lock , PaddedMutex , vmweak-1, true, Monitor::_safepoint_check_never);
222
223 def(StringTableWeakAlloc_lock , PaddedMutex , vmweak, true, Monitor::_safepoint_check_never);
224 def(StringTableWeakActive_lock , PaddedMutex , vmweak-1, true, Monitor::_safepoint_check_never);
225
226 def(ResolvedMethodTableWeakAlloc_lock , PaddedMutex , vmweak, true, Monitor::_safepoint_check_never);
227 def(ResolvedMethodTableWeakActive_lock , PaddedMutex , vmweak-1, true, Monitor::_safepoint_check_never);
228
229 def(FullGCCount_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never); // in support of ExplicitGCInvokesConcurrent
230 if (UseG1GC) {
231 def(DirtyCardQ_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never);
232 def(Shared_DirtyCardQ_lock , PaddedMutex , access + 1, true, Monitor::_safepoint_check_never);
233
234 def(FreeList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
235 def(OldSets_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
236 def(RootRegionScan_lock , PaddedMonitor, leaf , true, Monitor::_safepoint_check_never);
237
238 def(StringDedupQueue_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
239 def(StringDedupTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
240
241 def(MarkStackFreeList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
242 def(MarkStackChunkList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
243
244 def(MonitoringSupport_lock , PaddedMutex , native , true, Monitor::_safepoint_check_never); // used for serviceability monitoring support
245 }
246 if (UseShenandoahGC) {
247 def(StringDedupQueue_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
248 def(StringDedupTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
249 }
250 def(ParGCRareEvent_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_always);
251 def(CGCPhaseManager_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_always);
252 def(CodeCache_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
253 def(RawMonitor_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
254 def(OopMapCacheAlloc_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for oop_map_cache allocation.
255
256 def(MetaspaceExpand_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never);
257 def(ClassLoaderDataGraph_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always);
258
259 def(Patching_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never); // used for safepointing and code patching.
260 def(OsrList_lock , PaddedMutex , special-1, true, Monitor::_safepoint_check_never);
261 def(CompiledMethod_lock , PaddedMutex , special-1, true, Monitor::_safepoint_check_never);
262 def(Service_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // used for service thread operations
263 def(JmethodIdCreation_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for creating jmethodIDs.
264
265 def(SystemDictionary_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always);
266 def(ProtectionDomainSet_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never);
|