125 extern Mutex* Debug2_lock; // down synchronization related bugs!
126 extern Mutex* Debug3_lock;
127
128 extern Mutex* RawMonitor_lock;
129 extern Mutex* PerfDataMemAlloc_lock; // a lock on the allocator for PerfData memory for performance data
130 extern Mutex* PerfDataManager_lock; // a long on access to PerfDataManager resources
131 extern Mutex* ParkerFreeList_lock;
132 extern Mutex* OopMapCacheAlloc_lock; // protects allocation of oop_map caches
133
134 extern Mutex* FreeList_lock; // protects the free region list during safepoints
135 extern Monitor* SecondaryFreeList_lock; // protects the secondary free region list
136 extern Mutex* OldSets_lock; // protects the old region sets
137 extern Monitor* RootRegionScan_lock; // used to notify that the CM threads have finished scanning the IM snapshot regions
138 extern Mutex* MMUTracker_lock; // protects the MMU
139 // tracker data structures
140
141 extern Mutex* Management_lock; // a lock used to serialize JVM management
142 extern Monitor* Service_lock; // a lock used for service thread operation
143 extern Monitor* PeriodicTask_lock; // protects the periodic task structure
144
145 #ifdef INCLUDE_TRACE
146 extern Mutex* JfrStacktrace_lock; // used to guard access to the JFR stacktrace table
147 extern Monitor* JfrMsg_lock; // protects JFR messaging
148 extern Mutex* JfrBuffer_lock; // protects JFR buffer operations
149 extern Mutex* JfrStream_lock; // protects JFR stream access
150 extern Mutex* JfrThreadGroups_lock; // protects JFR access to Thread Groups
151 #endif
152
153 #ifndef SUPPORTS_NATIVE_CX8
154 extern Mutex* UnsafeJlong_lock; // provides Unsafe atomic updates to jlongs on platforms that don't support cx8
155 #endif
156
157 // A MutexLocker provides mutual exclusion with respect to a given mutex
158 // for the scope which contains the locker. The lock is an OS lock, not
159 // an object lock, and the two do not interoperate. Do not use Mutex-based
160 // locks to lock on Java objects, because they will not be respected if a
161 // that object is locked using the Java locking mechanism.
162 //
163 // NOTE WELL!!
164 //
165 // See orderAccess.hpp. We assume throughout the VM that MutexLocker's
166 // and friends constructors do a fence, a lock and an acquire *in that
167 // order*. And that their destructors do a release and unlock, in *that*
168 // order. If their implementations change such that these assumptions
169 // are violated, a whole lot of code will break.
170
|
125 extern Mutex* Debug2_lock; // down synchronization related bugs!
126 extern Mutex* Debug3_lock;
127
128 extern Mutex* RawMonitor_lock;
129 extern Mutex* PerfDataMemAlloc_lock; // a lock on the allocator for PerfData memory for performance data
130 extern Mutex* PerfDataManager_lock; // a long on access to PerfDataManager resources
131 extern Mutex* ParkerFreeList_lock;
132 extern Mutex* OopMapCacheAlloc_lock; // protects allocation of oop_map caches
133
134 extern Mutex* FreeList_lock; // protects the free region list during safepoints
135 extern Monitor* SecondaryFreeList_lock; // protects the secondary free region list
136 extern Mutex* OldSets_lock; // protects the old region sets
137 extern Monitor* RootRegionScan_lock; // used to notify that the CM threads have finished scanning the IM snapshot regions
138 extern Mutex* MMUTracker_lock; // protects the MMU
139 // tracker data structures
140
141 extern Mutex* Management_lock; // a lock used to serialize JVM management
142 extern Monitor* Service_lock; // a lock used for service thread operation
143 extern Monitor* PeriodicTask_lock; // protects the periodic task structure
144
145 #ifdef INCLUDE_JFR
146 extern Mutex* JfrStacktrace_lock; // used to guard access to the JFR stacktrace table
147 extern Monitor* JfrMsg_lock; // protects JFR messaging
148 extern Mutex* JfrBuffer_lock; // protects JFR buffer operations
149 extern Mutex* JfrStream_lock; // protects JFR stream access
150 extern Mutex* JfrThreadGroups_lock; // protects JFR access to Thread Groups
151
152 #ifndef SUPPORTS_NATIVE_CX8
153 extern Mutex* JfrCounters_lock; // provides atomic updates of JFR counters
154 #endif
155
156 #endif
157
158 #ifndef SUPPORTS_NATIVE_CX8
159 extern Mutex* UnsafeJlong_lock; // provides Unsafe atomic updates to jlongs on platforms that don't support cx8
160 #endif
161
162 // A MutexLocker provides mutual exclusion with respect to a given mutex
163 // for the scope which contains the locker. The lock is an OS lock, not
164 // an object lock, and the two do not interoperate. Do not use Mutex-based
165 // locks to lock on Java objects, because they will not be respected if a
166 // that object is locked using the Java locking mechanism.
167 //
168 // NOTE WELL!!
169 //
170 // See orderAccess.hpp. We assume throughout the VM that MutexLocker's
171 // and friends constructors do a fence, a lock and an acquire *in that
172 // order*. And that their destructors do a release and unlock, in *that*
173 // order. If their implementations change such that these assumptions
174 // are violated, a whole lot of code will break.
175
|