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 Monitor* StringDedupQueue_lock = NULL;
68 Mutex* StringDedupTable_lock = NULL;
69 Monitor* CodeCache_lock = NULL;
70 Mutex* MethodData_lock = NULL;
71 Mutex* TouchedMethodLog_lock = NULL;
72 Mutex* RetData_lock = NULL;
73 Monitor* VMOperationQueue_lock = NULL;
74 Monitor* VMOperationRequest_lock = NULL;
75 Monitor* SerializePage_lock = NULL;
76 Monitor* Threads_lock = NULL;
77 Mutex* NonJavaThreadsList_lock = NULL;
78 Monitor* CGC_lock = NULL;
79 Monitor* STS_lock = NULL;
80 Monitor* FullGCCount_lock = NULL;
81 Monitor* SATB_Q_CBL_mon = NULL;
82 Mutex* Shared_SATB_Q_lock = NULL;
83 Monitor* DirtyCardQ_CBL_mon = NULL;
84 Mutex* Shared_DirtyCardQ_lock = NULL;
85 Mutex* MarkStackFreeList_lock = NULL;
86 Mutex* MarkStackChunkList_lock = NULL;
87 Mutex* MonitoringSupport_lock = NULL;
88 Mutex* ParGCRareEvent_lock = NULL;
89 Mutex* DerivedPointerTableGC_lock = NULL;
90 Monitor* CGCPhaseManager_lock = NULL;
91 Mutex* Compile_lock = NULL;
92 Monitor* MethodCompileQueue_lock = NULL;
93 Monitor* CompileThread_lock = NULL;
94 Monitor* Compilation_lock = NULL;
95 Mutex* CompileTaskAlloc_lock = NULL;
96 Mutex* CompileStatistics_lock = NULL;
97 Mutex* DirectivesStack_lock = NULL;
98 Mutex* MultiArray_lock = NULL;
99 Monitor* Terminator_lock = NULL;
100 Monitor* BeforeExit_lock = NULL;
101 Monitor* Notify_lock = NULL;
102 Mutex* ProfilePrint_lock = NULL;
195 }
196
197 // Using Padded subclasses to prevent false sharing of these global monitors and mutexes.
198 void mutex_init() {
199 def(tty_lock , PaddedMutex , tty, true, Monitor::_safepoint_check_never); // allow to lock in VM
200
201 def(CGC_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // coordinate between fore- and background GC
202 def(STS_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
203
204 def(VMWeakAlloc_lock , PaddedMutex , vmweak, true, Monitor::_safepoint_check_never);
205 def(VMWeakActive_lock , PaddedMutex , vmweak-1, true, Monitor::_safepoint_check_never);
206
207 def(StringTableWeakAlloc_lock , PaddedMutex , vmweak, true, Monitor::_safepoint_check_never);
208 def(StringTableWeakActive_lock , PaddedMutex , vmweak-1, true, Monitor::_safepoint_check_never);
209
210 if (UseConcMarkSweepGC || UseG1GC) {
211 def(FullGCCount_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never); // in support of ExplicitGCInvokesConcurrent
212 }
213 if (UseG1GC) {
214 def(SATB_Q_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never);
215 def(Shared_SATB_Q_lock , PaddedMutex , access + 1, true, Monitor::_safepoint_check_never);
216
217 def(DirtyCardQ_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never);
218 def(Shared_DirtyCardQ_lock , PaddedMutex , access + 1, true, Monitor::_safepoint_check_never);
219
220 def(FreeList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
221 def(OldSets_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
222 def(RootRegionScan_lock , PaddedMonitor, leaf , true, Monitor::_safepoint_check_never);
223
224 def(StringDedupQueue_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
225 def(StringDedupTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
226
227 def(MarkStackFreeList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
228 def(MarkStackChunkList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
229
230 def(MonitoringSupport_lock , PaddedMutex , native , true, Monitor::_safepoint_check_never); // used for serviceability monitoring support
231 }
232 if (UseShenandoahGC) {
233 def(SATB_Q_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never);
234 def(Shared_SATB_Q_lock , PaddedMutex , access + 1, true, Monitor::_safepoint_check_never);
235
236 def(StringDedupQueue_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
237 def(StringDedupTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
238 }
239 def(ParGCRareEvent_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_sometimes);
240 def(DerivedPointerTableGC_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
241 def(CGCPhaseManager_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_sometimes);
242 def(CodeCache_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
243 def(RawMonitor_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
244 def(OopMapCacheAlloc_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for oop_map_cache allocation.
245
246 def(MetaspaceExpand_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never);
247 def(ClassLoaderDataGraph_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always);
248
249 def(Patching_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never); // used for safepointing and code patching.
250 def(Service_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // used for service thread operations
251 def(JmethodIdCreation_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for creating jmethodIDs.
252
253 def(SystemDictionary_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always); // lookups done by VM thread
254 def(SharedDictionary_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // lookups done by VM thread
|
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 Monitor* StringDedupQueue_lock = NULL;
68 Mutex* StringDedupTable_lock = NULL;
69 Monitor* CodeCache_lock = NULL;
70 Mutex* MethodData_lock = NULL;
71 Mutex* TouchedMethodLog_lock = NULL;
72 Mutex* RetData_lock = NULL;
73 Monitor* VMOperationQueue_lock = NULL;
74 Monitor* VMOperationRequest_lock = NULL;
75 Monitor* SerializePage_lock = NULL;
76 Monitor* Threads_lock = NULL;
77 Mutex* NonJavaThreadsList_lock = NULL;
78 Monitor* CGC_lock = NULL;
79 Monitor* STS_lock = NULL;
80 Monitor* FullGCCount_lock = NULL;
81 Monitor* SATB_Q_CBL_mon = NULL;
82 Monitor* DirtyCardQ_CBL_mon = NULL;
83 Mutex* Shared_DirtyCardQ_lock = NULL;
84 Mutex* MarkStackFreeList_lock = NULL;
85 Mutex* MarkStackChunkList_lock = NULL;
86 Mutex* MonitoringSupport_lock = NULL;
87 Mutex* ParGCRareEvent_lock = NULL;
88 Mutex* DerivedPointerTableGC_lock = NULL;
89 Monitor* CGCPhaseManager_lock = NULL;
90 Mutex* Compile_lock = NULL;
91 Monitor* MethodCompileQueue_lock = NULL;
92 Monitor* CompileThread_lock = NULL;
93 Monitor* Compilation_lock = NULL;
94 Mutex* CompileTaskAlloc_lock = NULL;
95 Mutex* CompileStatistics_lock = NULL;
96 Mutex* DirectivesStack_lock = NULL;
97 Mutex* MultiArray_lock = NULL;
98 Monitor* Terminator_lock = NULL;
99 Monitor* BeforeExit_lock = NULL;
100 Monitor* Notify_lock = NULL;
101 Mutex* ProfilePrint_lock = NULL;
194 }
195
196 // Using Padded subclasses to prevent false sharing of these global monitors and mutexes.
197 void mutex_init() {
198 def(tty_lock , PaddedMutex , tty, true, Monitor::_safepoint_check_never); // allow to lock in VM
199
200 def(CGC_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // coordinate between fore- and background GC
201 def(STS_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
202
203 def(VMWeakAlloc_lock , PaddedMutex , vmweak, true, Monitor::_safepoint_check_never);
204 def(VMWeakActive_lock , PaddedMutex , vmweak-1, true, Monitor::_safepoint_check_never);
205
206 def(StringTableWeakAlloc_lock , PaddedMutex , vmweak, true, Monitor::_safepoint_check_never);
207 def(StringTableWeakActive_lock , PaddedMutex , vmweak-1, true, Monitor::_safepoint_check_never);
208
209 if (UseConcMarkSweepGC || UseG1GC) {
210 def(FullGCCount_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never); // in support of ExplicitGCInvokesConcurrent
211 }
212 if (UseG1GC) {
213 def(SATB_Q_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never);
214
215 def(DirtyCardQ_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never);
216 def(Shared_DirtyCardQ_lock , PaddedMutex , access + 1, true, Monitor::_safepoint_check_never);
217
218 def(FreeList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
219 def(OldSets_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
220 def(RootRegionScan_lock , PaddedMonitor, leaf , true, Monitor::_safepoint_check_never);
221
222 def(StringDedupQueue_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
223 def(StringDedupTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
224
225 def(MarkStackFreeList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
226 def(MarkStackChunkList_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_never);
227
228 def(MonitoringSupport_lock , PaddedMutex , native , true, Monitor::_safepoint_check_never); // used for serviceability monitoring support
229 }
230 if (UseShenandoahGC) {
231 def(SATB_Q_CBL_mon , PaddedMonitor, access, true, Monitor::_safepoint_check_never);
232
233 def(StringDedupQueue_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_never);
234 def(StringDedupTable_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
235 }
236 def(ParGCRareEvent_lock , PaddedMutex , leaf , true, Monitor::_safepoint_check_sometimes);
237 def(DerivedPointerTableGC_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
238 def(CGCPhaseManager_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_sometimes);
239 def(CodeCache_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
240 def(RawMonitor_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never);
241 def(OopMapCacheAlloc_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for oop_map_cache allocation.
242
243 def(MetaspaceExpand_lock , PaddedMutex , leaf-1, true, Monitor::_safepoint_check_never);
244 def(ClassLoaderDataGraph_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always);
245
246 def(Patching_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never); // used for safepointing and code patching.
247 def(Service_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // used for service thread operations
248 def(JmethodIdCreation_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for creating jmethodIDs.
249
250 def(SystemDictionary_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always); // lookups done by VM thread
251 def(SharedDictionary_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // lookups done by VM thread
|