93 // queue shared by
94 // non-Java threads.
95 extern Mutex* MarkStackFreeList_lock; // Protects access to the global mark stack free list.
96 extern Mutex* MarkStackChunkList_lock; // Protects access to the global mark stack chunk list.
97 extern Mutex* MonitoringSupport_lock; // Protects updates to the serviceability memory pools.
98 extern Mutex* ParGCRareEvent_lock; // Synchronizes various (rare) parallel GC ops.
99 extern Mutex* Compile_lock; // a lock held when Compilation is updating code (used to block CodeCache traversal, CHA updates, etc)
100 extern Monitor* MethodCompileQueue_lock; // a lock held when method compilations are enqueued, dequeued
101 extern Monitor* CompileThread_lock; // a lock held by compile threads during compilation system initialization
102 extern Monitor* Compilation_lock; // a lock used to pause compilation
103 extern Mutex* CompileTaskAlloc_lock; // a lock held when CompileTasks are allocated
104 extern Mutex* CompileStatistics_lock; // a lock held when updating compilation statistics
105 extern Mutex* DirectivesStack_lock; // a lock held when mutating the dirstack and ref counting directives
106 extern Mutex* MultiArray_lock; // a lock used to guard allocation of multi-dim arrays
107 extern Monitor* Terminator_lock; // a lock used to guard termination of the vm
108 extern Monitor* BeforeExit_lock; // a lock used to guard cleanups and shutdown hooks
109 extern Monitor* Notify_lock; // a lock used to synchronize the start-up of the vm
110 extern Mutex* ProfilePrint_lock; // a lock used to serialize the printing of profiles
111 extern Mutex* ExceptionCache_lock; // a lock used to synchronize exception cache updates
112 extern Mutex* OsrList_lock; // a lock used to serialize access to OSR queues
113
114 #ifndef PRODUCT
115 extern Mutex* FullGCALot_lock; // a lock to make FullGCALot MT safe
116 #endif // PRODUCT
117 extern Mutex* Debug1_lock; // A bunch of pre-allocated locks that can be used for tracing
118 extern Mutex* Debug2_lock; // down synchronization related bugs!
119 extern Mutex* Debug3_lock;
120
121 extern Mutex* RawMonitor_lock;
122 extern Mutex* PerfDataMemAlloc_lock; // a lock on the allocator for PerfData memory for performance data
123 extern Mutex* PerfDataManager_lock; // a long on access to PerfDataManager resources
124 extern Mutex* ParkerFreeList_lock;
125 extern Mutex* OopMapCacheAlloc_lock; // protects allocation of oop_map caches
126
127 extern Mutex* FreeList_lock; // protects the free region list during safepoints
128 extern Mutex* OldSets_lock; // protects the old region sets
129 extern Monitor* RootRegionScan_lock; // used to notify that the CM threads have finished scanning the IM snapshot regions
130
131 extern Mutex* Management_lock; // a lock used to serialize JVM management
132 extern Monitor* Service_lock; // a lock used for service thread operation
133 extern Monitor* PeriodicTask_lock; // protects the periodic task structure
134 extern Monitor* RedefineClasses_lock; // locks classes from parallel redefinition
135
136 #if INCLUDE_JFR
137 extern Mutex* JfrStacktrace_lock; // used to guard access to the JFR stacktrace table
138 extern Monitor* JfrMsg_lock; // protects JFR messaging
139 extern Mutex* JfrBuffer_lock; // protects JFR buffer operations
140 extern Mutex* JfrStream_lock; // protects JFR stream access
141 #endif
142
143 #ifndef SUPPORTS_NATIVE_CX8
144 extern Mutex* UnsafeJlong_lock; // provides Unsafe atomic updates to jlongs on platforms that don't support cx8
145 #endif
146
147 extern Mutex* MetaspaceExpand_lock; // protects Metaspace virtualspace and chunk expansions
148 extern Mutex* ClassLoaderDataGraph_lock; // protects CLDG list, needed for concurrent unloading
149
150
151 extern Monitor* CodeHeapStateAnalytics_lock; // lock print functions against concurrent analyze functions.
152 // Only used locally in PrintCodeCacheLayout processing.
153
154 // A MutexLocker provides mutual exclusion with respect to a given mutex
155 // for the scope which contains the locker. The lock is an OS lock, not
156 // an object lock, and the two do not interoperate. Do not use Mutex-based
157 // locks to lock on Java objects, because they will not be respected if a
158 // that object is locked using the Java locking mechanism.
159 //
160 // NOTE WELL!!
|
93 // queue shared by
94 // non-Java threads.
95 extern Mutex* MarkStackFreeList_lock; // Protects access to the global mark stack free list.
96 extern Mutex* MarkStackChunkList_lock; // Protects access to the global mark stack chunk list.
97 extern Mutex* MonitoringSupport_lock; // Protects updates to the serviceability memory pools.
98 extern Mutex* ParGCRareEvent_lock; // Synchronizes various (rare) parallel GC ops.
99 extern Mutex* Compile_lock; // a lock held when Compilation is updating code (used to block CodeCache traversal, CHA updates, etc)
100 extern Monitor* MethodCompileQueue_lock; // a lock held when method compilations are enqueued, dequeued
101 extern Monitor* CompileThread_lock; // a lock held by compile threads during compilation system initialization
102 extern Monitor* Compilation_lock; // a lock used to pause compilation
103 extern Mutex* CompileTaskAlloc_lock; // a lock held when CompileTasks are allocated
104 extern Mutex* CompileStatistics_lock; // a lock held when updating compilation statistics
105 extern Mutex* DirectivesStack_lock; // a lock held when mutating the dirstack and ref counting directives
106 extern Mutex* MultiArray_lock; // a lock used to guard allocation of multi-dim arrays
107 extern Monitor* Terminator_lock; // a lock used to guard termination of the vm
108 extern Monitor* BeforeExit_lock; // a lock used to guard cleanups and shutdown hooks
109 extern Monitor* Notify_lock; // a lock used to synchronize the start-up of the vm
110 extern Mutex* ProfilePrint_lock; // a lock used to serialize the printing of profiles
111 extern Mutex* ExceptionCache_lock; // a lock used to synchronize exception cache updates
112 extern Mutex* OsrList_lock; // a lock used to serialize access to OSR queues
113 extern Mutex* NMethodSweeper_stat_lock; // a lock used to serialize access to sweeper statistics
114
115 #ifndef PRODUCT
116 extern Mutex* FullGCALot_lock; // a lock to make FullGCALot MT safe
117 #endif // PRODUCT
118 extern Mutex* Debug1_lock; // A bunch of pre-allocated locks that can be used for tracing
119 extern Mutex* Debug2_lock; // down synchronization related bugs!
120 extern Mutex* Debug3_lock;
121
122 extern Mutex* RawMonitor_lock;
123 extern Mutex* PerfDataMemAlloc_lock; // a lock on the allocator for PerfData memory for performance data
124 extern Mutex* PerfDataManager_lock; // a long on access to PerfDataManager resources
125 extern Mutex* ParkerFreeList_lock;
126 extern Mutex* OopMapCacheAlloc_lock; // protects allocation of oop_map caches
127
128 extern Mutex* FreeList_lock; // protects the free region list during safepoints
129 extern Mutex* OldSets_lock; // protects the old region sets
130 extern Monitor* RootRegionScan_lock; // used to notify that the CM threads have finished scanning the IM snapshot regions
131
132 extern Mutex* Management_lock; // a lock used to serialize JVM management
133 extern Monitor* Service_lock; // a lock used for service thread operation
134 extern Monitor* PeriodicTask_lock; // protects the periodic task structure
135 extern Monitor* RedefineClasses_lock; // locks classes from parallel redefinition
136 extern Monitor* ThreadsSMRSupport_delete_lock; // Used by ThreadsSMRSupport to take pressure off the Threads_lock
137 extern Mutex* Decoder_shared_decoder_lock; // serializes access to the decoder during normal (not error reporting) use
138 extern Mutex* DCmdFactory_lock; // serialize access to DCmdFactory information
139 #if INCLUDE_JFR
140 extern Mutex* JfrStacktrace_lock; // used to guard access to the JFR stacktrace table
141 extern Monitor* JfrMsg_lock; // protects JFR messaging
142 extern Mutex* JfrBuffer_lock; // protects JFR buffer operations
143 extern Mutex* JfrStream_lock; // protects JFR stream access
144 extern Monitor* JfrThreadSampler_lock; // used to suspend/resume JFR thread sampler
145 #endif
146
147 #ifndef SUPPORTS_NATIVE_CX8
148 extern Mutex* UnsafeJlong_lock; // provides Unsafe atomic updates to jlongs on platforms that don't support cx8
149 #endif
150
151 extern Mutex* MetaspaceExpand_lock; // protects Metaspace virtualspace and chunk expansions
152 extern Mutex* ClassLoaderDataGraph_lock; // protects CLDG list, needed for concurrent unloading
153
154
155 extern Monitor* CodeHeapStateAnalytics_lock; // lock print functions against concurrent analyze functions.
156 // Only used locally in PrintCodeCacheLayout processing.
157
158 // A MutexLocker provides mutual exclusion with respect to a given mutex
159 // for the scope which contains the locker. The lock is an OS lock, not
160 // an object lock, and the two do not interoperate. Do not use Mutex-based
161 // locks to lock on Java objects, because they will not be respected if a
162 // that object is locked using the Java locking mechanism.
163 //
164 // NOTE WELL!!
|