< prev index next >

src/hotspot/share/runtime/mutexLocker.cpp

Print this page
rev 50392 : JEP 331


 112 Mutex*   Debug3_lock                  = NULL;
 113 
 114 Mutex*   tty_lock                     = NULL;
 115 
 116 Mutex*   RawMonitor_lock              = NULL;
 117 Mutex*   PerfDataMemAlloc_lock        = NULL;
 118 Mutex*   PerfDataManager_lock         = NULL;
 119 Mutex*   OopMapCacheAlloc_lock        = NULL;
 120 
 121 Mutex*   FreeList_lock                = NULL;
 122 Mutex*   OldSets_lock                 = NULL;
 123 Monitor* RootRegionScan_lock          = NULL;
 124 
 125 Monitor* GCTaskManager_lock           = NULL;
 126 
 127 Mutex*   Management_lock              = NULL;
 128 Monitor* Service_lock                 = NULL;
 129 Monitor* PeriodicTask_lock            = NULL;
 130 Monitor* RedefineClasses_lock         = NULL;
 131 


 132 #if INCLUDE_JFR
 133 Mutex*   JfrStacktrace_lock           = NULL;
 134 Monitor* JfrMsg_lock                  = NULL;
 135 Mutex*   JfrBuffer_lock               = NULL;
 136 Mutex*   JfrStream_lock               = NULL;
 137 #endif
 138 
 139 #ifndef SUPPORTS_NATIVE_CX8
 140 Mutex*   UnsafeJlong_lock             = NULL;
 141 #endif
 142 Monitor* CodeHeapStateAnalytics_lock  = NULL;
 143 
 144 Mutex*   MetaspaceExpand_lock         = NULL;
 145 
 146 #define MAX_NUM_MUTEX 128
 147 static Monitor * _mutex_array[MAX_NUM_MUTEX];
 148 static int _num_mutex;
 149 
 150 #ifdef ASSERT
 151 void assert_locked_or_safepoint(const Monitor * lock) {


 274 
 275   def(CompiledIC_lock              , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // locks VtableStubs_lock, InlineCacheBuffer_lock
 276   def(CompileTaskAlloc_lock        , PaddedMutex  , nonleaf+2,   true,  Monitor::_safepoint_check_always);
 277   def(CompileStatistics_lock       , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);
 278   def(DirectivesStack_lock         , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 279   def(MultiArray_lock              , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // locks SymbolTable_lock
 280 
 281   def(JvmtiThreadState_lock        , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // Used by JvmtiThreadState/JvmtiEventController
 282   def(Management_lock              , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // used for JVM management
 283 
 284   def(Compile_lock                 , PaddedMutex  , nonleaf+3,   true,  Monitor::_safepoint_check_sometimes);
 285   def(MethodData_lock              , PaddedMutex  , nonleaf+3,   false, Monitor::_safepoint_check_always);
 286   def(TouchedMethodLog_lock        , PaddedMutex  , nonleaf+3,   false, Monitor::_safepoint_check_always);
 287 
 288   def(MethodCompileQueue_lock      , PaddedMonitor, nonleaf+4,   true,  Monitor::_safepoint_check_always);
 289   def(Debug2_lock                  , PaddedMutex  , nonleaf+4,   true,  Monitor::_safepoint_check_never);
 290   def(Debug3_lock                  , PaddedMutex  , nonleaf+4,   true,  Monitor::_safepoint_check_never);
 291   def(CompileThread_lock           , PaddedMonitor, nonleaf+5,   false, Monitor::_safepoint_check_always);
 292   def(PeriodicTask_lock            , PaddedMonitor, nonleaf+5,   true,  Monitor::_safepoint_check_sometimes);
 293   def(RedefineClasses_lock         , PaddedMonitor, nonleaf+5,   true,  Monitor::_safepoint_check_always);



 294   if (WhiteBoxAPI) {
 295     def(Compilation_lock           , PaddedMonitor, leaf,        false, Monitor::_safepoint_check_never);
 296   }
 297 
 298 #if INCLUDE_JFR
 299   def(JfrMsg_lock                  , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_always);
 300   def(JfrBuffer_lock               , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 301   def(JfrStream_lock               , PaddedMutex  , leaf+1,      true,  Monitor::_safepoint_check_never);      // ensure to rank lower than 'safepoint'
 302   def(JfrStacktrace_lock           , PaddedMutex  , special,     true,  Monitor::_safepoint_check_sometimes);
 303 #endif
 304 
 305 #ifndef SUPPORTS_NATIVE_CX8
 306   def(UnsafeJlong_lock             , PaddedMutex  , special,     false, Monitor::_safepoint_check_never);
 307 #endif
 308 
 309   def(CodeHeapStateAnalytics_lock  , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 310 }
 311 
 312 GCMutexLocker::GCMutexLocker(Monitor * mutex) {
 313   if (SafepointSynchronize::is_at_safepoint()) {




 112 Mutex*   Debug3_lock                  = NULL;
 113 
 114 Mutex*   tty_lock                     = NULL;
 115 
 116 Mutex*   RawMonitor_lock              = NULL;
 117 Mutex*   PerfDataMemAlloc_lock        = NULL;
 118 Mutex*   PerfDataManager_lock         = NULL;
 119 Mutex*   OopMapCacheAlloc_lock        = NULL;
 120 
 121 Mutex*   FreeList_lock                = NULL;
 122 Mutex*   OldSets_lock                 = NULL;
 123 Monitor* RootRegionScan_lock          = NULL;
 124 
 125 Monitor* GCTaskManager_lock           = NULL;
 126 
 127 Mutex*   Management_lock              = NULL;
 128 Monitor* Service_lock                 = NULL;
 129 Monitor* PeriodicTask_lock            = NULL;
 130 Monitor* RedefineClasses_lock         = NULL;
 131 
 132 Mutex*   ThreadHeapSampler_lock       = NULL;
 133 
 134 #if INCLUDE_JFR
 135 Mutex*   JfrStacktrace_lock           = NULL;
 136 Monitor* JfrMsg_lock                  = NULL;
 137 Mutex*   JfrBuffer_lock               = NULL;
 138 Mutex*   JfrStream_lock               = NULL;
 139 #endif
 140 
 141 #ifndef SUPPORTS_NATIVE_CX8
 142 Mutex*   UnsafeJlong_lock             = NULL;
 143 #endif
 144 Monitor* CodeHeapStateAnalytics_lock  = NULL;
 145 
 146 Mutex*   MetaspaceExpand_lock         = NULL;
 147 
 148 #define MAX_NUM_MUTEX 128
 149 static Monitor * _mutex_array[MAX_NUM_MUTEX];
 150 static int _num_mutex;
 151 
 152 #ifdef ASSERT
 153 void assert_locked_or_safepoint(const Monitor * lock) {


 276 
 277   def(CompiledIC_lock              , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // locks VtableStubs_lock, InlineCacheBuffer_lock
 278   def(CompileTaskAlloc_lock        , PaddedMutex  , nonleaf+2,   true,  Monitor::_safepoint_check_always);
 279   def(CompileStatistics_lock       , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);
 280   def(DirectivesStack_lock         , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 281   def(MultiArray_lock              , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // locks SymbolTable_lock
 282 
 283   def(JvmtiThreadState_lock        , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // Used by JvmtiThreadState/JvmtiEventController
 284   def(Management_lock              , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // used for JVM management
 285 
 286   def(Compile_lock                 , PaddedMutex  , nonleaf+3,   true,  Monitor::_safepoint_check_sometimes);
 287   def(MethodData_lock              , PaddedMutex  , nonleaf+3,   false, Monitor::_safepoint_check_always);
 288   def(TouchedMethodLog_lock        , PaddedMutex  , nonleaf+3,   false, Monitor::_safepoint_check_always);
 289 
 290   def(MethodCompileQueue_lock      , PaddedMonitor, nonleaf+4,   true,  Monitor::_safepoint_check_always);
 291   def(Debug2_lock                  , PaddedMutex  , nonleaf+4,   true,  Monitor::_safepoint_check_never);
 292   def(Debug3_lock                  , PaddedMutex  , nonleaf+4,   true,  Monitor::_safepoint_check_never);
 293   def(CompileThread_lock           , PaddedMonitor, nonleaf+5,   false, Monitor::_safepoint_check_always);
 294   def(PeriodicTask_lock            , PaddedMonitor, nonleaf+5,   true,  Monitor::_safepoint_check_sometimes);
 295   def(RedefineClasses_lock         , PaddedMonitor, nonleaf+5,   true,  Monitor::_safepoint_check_always);
 296 
 297   def(ThreadHeapSampler_lock       , PaddedMutex,   nonleaf,     false, Monitor::_safepoint_check_never);
 298 
 299   if (WhiteBoxAPI) {
 300     def(Compilation_lock           , PaddedMonitor, leaf,        false, Monitor::_safepoint_check_never);
 301   }
 302 
 303 #if INCLUDE_JFR
 304   def(JfrMsg_lock                  , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_always);
 305   def(JfrBuffer_lock               , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 306   def(JfrStream_lock               , PaddedMutex  , leaf+1,      true,  Monitor::_safepoint_check_never);      // ensure to rank lower than 'safepoint'
 307   def(JfrStacktrace_lock           , PaddedMutex  , special,     true,  Monitor::_safepoint_check_sometimes);
 308 #endif
 309 
 310 #ifndef SUPPORTS_NATIVE_CX8
 311   def(UnsafeJlong_lock             , PaddedMutex  , special,     false, Monitor::_safepoint_check_never);
 312 #endif
 313 
 314   def(CodeHeapStateAnalytics_lock  , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 315 }
 316 
 317 GCMutexLocker::GCMutexLocker(Monitor * mutex) {
 318   if (SafepointSynchronize::is_at_safepoint()) {


< prev index next >