< prev index next >

src/share/vm/runtime/mutexLocker.hpp

Print this page




 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 


< prev index next >