< prev index next >

src/hotspot/share/runtime/mutexLocker.cpp

Print this page
rev 49247 : [mq]: event5


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


 130 #if INCLUDE_TRACE
 131 Mutex*   JfrStacktrace_lock           = NULL;
 132 Monitor* JfrMsg_lock                  = NULL;
 133 Mutex*   JfrBuffer_lock               = NULL;
 134 Mutex*   JfrStream_lock               = NULL;
 135 #endif
 136 
 137 #ifndef SUPPORTS_NATIVE_CX8
 138 Mutex*   UnsafeJlong_lock             = NULL;
 139 #endif
 140 
 141 #define MAX_NUM_MUTEX 128
 142 static Monitor * _mutex_array[MAX_NUM_MUTEX];
 143 static int _num_mutex;
 144 
 145 #ifdef ASSERT
 146 void assert_locked_or_safepoint(const Monitor * lock) {
 147   // check if this thread owns the lock (common case)
 148   if (IgnoreLockingAssertions) return;
 149   assert(lock != NULL, "Need non-NULL lock");


 266 
 267   def(CompiledIC_lock              , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // locks VtableStubs_lock, InlineCacheBuffer_lock
 268   def(CompileTaskAlloc_lock        , PaddedMutex  , nonleaf+2,   true,  Monitor::_safepoint_check_always);
 269   def(CompileStatistics_lock       , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);
 270   def(DirectivesStack_lock         , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 271   def(MultiArray_lock              , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // locks SymbolTable_lock
 272 
 273   def(JvmtiThreadState_lock        , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // Used by JvmtiThreadState/JvmtiEventController
 274   def(Management_lock              , PaddedMutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // used for JVM management
 275 
 276   def(Compile_lock                 , PaddedMutex  , nonleaf+3,   true,  Monitor::_safepoint_check_sometimes);
 277   def(MethodData_lock              , PaddedMutex  , nonleaf+3,   false, Monitor::_safepoint_check_always);
 278   def(TouchedMethodLog_lock        , PaddedMutex  , nonleaf+3,   false, Monitor::_safepoint_check_always);
 279 
 280   def(MethodCompileQueue_lock      , PaddedMonitor, nonleaf+4,   true,  Monitor::_safepoint_check_always);
 281   def(Debug2_lock                  , PaddedMutex  , nonleaf+4,   true,  Monitor::_safepoint_check_never);
 282   def(Debug3_lock                  , PaddedMutex  , nonleaf+4,   true,  Monitor::_safepoint_check_never);
 283   def(CompileThread_lock           , PaddedMonitor, nonleaf+5,   false, Monitor::_safepoint_check_always);
 284   def(PeriodicTask_lock            , PaddedMonitor, nonleaf+5,   true,  Monitor::_safepoint_check_sometimes);
 285   def(RedefineClasses_lock         , PaddedMonitor, nonleaf+5,   true,  Monitor::_safepoint_check_always);



 286   if (WhiteBoxAPI) {
 287     def(Compilation_lock           , PaddedMonitor, leaf,        false, Monitor::_safepoint_check_never);
 288   }
 289 
 290 #if INCLUDE_TRACE
 291   def(JfrMsg_lock                  , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_always);
 292   def(JfrBuffer_lock               , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 293   def(JfrStream_lock               , PaddedMutex  , leaf+1,      true,  Monitor::_safepoint_check_never);      // ensure to rank lower than 'safepoint'
 294   def(JfrStacktrace_lock           , PaddedMutex  , special,     true,  Monitor::_safepoint_check_sometimes);
 295 #endif
 296 
 297 #ifndef SUPPORTS_NATIVE_CX8
 298   def(UnsafeJlong_lock             , PaddedMutex  , special,     false, Monitor::_safepoint_check_never);
 299 #endif
 300 }
 301 
 302 GCMutexLocker::GCMutexLocker(Monitor * mutex) {
 303   if (SafepointSynchronize::is_at_safepoint()) {
 304     _locked = false;
 305   } else {




 110 
 111 Mutex*   tty_lock                     = NULL;
 112 
 113 Mutex*   RawMonitor_lock              = NULL;
 114 Mutex*   PerfDataMemAlloc_lock        = NULL;
 115 Mutex*   PerfDataManager_lock         = NULL;
 116 Mutex*   OopMapCacheAlloc_lock        = NULL;
 117 
 118 Mutex*   FreeList_lock                = NULL;
 119 Monitor* SecondaryFreeList_lock       = NULL;
 120 Mutex*   OldSets_lock                 = NULL;
 121 Monitor* RootRegionScan_lock          = NULL;
 122 
 123 Monitor* GCTaskManager_lock           = NULL;
 124 
 125 Mutex*   Management_lock              = NULL;
 126 Monitor* Service_lock                 = NULL;
 127 Monitor* PeriodicTask_lock            = NULL;
 128 Monitor* RedefineClasses_lock         = NULL;
 129 
 130 Monitor* ThreadHeapSampler_lock       = NULL;
 131 
 132 #if INCLUDE_TRACE
 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 
 143 #define MAX_NUM_MUTEX 128
 144 static Monitor * _mutex_array[MAX_NUM_MUTEX];
 145 static int _num_mutex;
 146 
 147 #ifdef ASSERT
 148 void assert_locked_or_safepoint(const Monitor * lock) {
 149   // check if this thread owns the lock (common case)
 150   if (IgnoreLockingAssertions) return;
 151   assert(lock != NULL, "Need non-NULL lock");


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


< prev index next >