< prev index next >

src/hotspot/share/runtime/mutexLocker.cpp

Print this page
rev 55389 : [mq]: satb_lock_free


  66 Mutex*   ExpandHeap_lock              = NULL;
  67 Mutex*   AdapterHandlerLibrary_lock   = NULL;
  68 Mutex*   SignatureHandlerLibrary_lock = NULL;
  69 Mutex*   VtableStubs_lock             = NULL;
  70 Mutex*   SymbolArena_lock             = NULL;
  71 Monitor* StringDedupQueue_lock        = NULL;
  72 Mutex*   StringDedupTable_lock        = NULL;
  73 Monitor* CodeCache_lock               = NULL;
  74 Mutex*   MethodData_lock              = NULL;
  75 Mutex*   TouchedMethodLog_lock        = NULL;
  76 Mutex*   RetData_lock                 = NULL;
  77 Monitor* VMOperationQueue_lock        = NULL;
  78 Monitor* VMOperationRequest_lock      = NULL;
  79 Monitor* SerializePage_lock           = NULL;
  80 Monitor* Threads_lock                 = NULL;
  81 Mutex*   NonJavaThreadsList_lock      = NULL;
  82 Mutex*   NonJavaThreadsListSync_lock  = NULL;
  83 Monitor* CGC_lock                     = NULL;
  84 Monitor* STS_lock                     = NULL;
  85 Monitor* FullGCCount_lock             = NULL;
  86 Monitor* SATB_Q_CBL_mon               = NULL;
  87 Monitor* DirtyCardQ_CBL_mon           = NULL;
  88 Mutex*   Shared_DirtyCardQ_lock       = NULL;
  89 Mutex*   MarkStackFreeList_lock       = NULL;
  90 Mutex*   MarkStackChunkList_lock      = NULL;
  91 Mutex*   MonitoringSupport_lock       = NULL;
  92 Mutex*   ParGCRareEvent_lock          = NULL;
  93 Monitor* CGCPhaseManager_lock         = NULL;
  94 Mutex*   Compile_lock                 = NULL;
  95 Monitor* MethodCompileQueue_lock      = NULL;
  96 Monitor* CompileThread_lock           = NULL;
  97 Monitor* Compilation_lock             = NULL;
  98 Mutex*   CompileTaskAlloc_lock        = NULL;
  99 Mutex*   CompileStatistics_lock       = NULL;
 100 Mutex*   DirectivesStack_lock         = NULL;
 101 Mutex*   MultiArray_lock              = NULL;
 102 Monitor* Terminator_lock              = NULL;
 103 Monitor* InitCompleted_lock           = NULL;
 104 Monitor* BeforeExit_lock              = NULL;
 105 Monitor* Notify_lock                  = NULL;
 106 Mutex*   ProfilePrint_lock            = NULL;


 212 }
 213 
 214 // Using Padded subclasses to prevent false sharing of these global monitors and mutexes.
 215 void mutex_init() {
 216   def(tty_lock                     , PaddedMutex  , tty,         true,  Monitor::_safepoint_check_never);      // allow to lock in VM
 217 
 218   def(CGC_lock                     , PaddedMonitor, special,     true,  Monitor::_safepoint_check_never);      // coordinate between fore- and background GC
 219   def(STS_lock                     , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 220 
 221   def(VMWeakAlloc_lock             , PaddedMutex  , vmweak,      true,  Monitor::_safepoint_check_never);
 222   def(VMWeakActive_lock            , PaddedMutex  , vmweak-1,    true,  Monitor::_safepoint_check_never);
 223 
 224   def(StringTableWeakAlloc_lock    , PaddedMutex  , vmweak,      true,  Monitor::_safepoint_check_never);
 225   def(StringTableWeakActive_lock   , PaddedMutex  , vmweak-1,    true,  Monitor::_safepoint_check_never);
 226 
 227   def(ResolvedMethodTableWeakAlloc_lock    , PaddedMutex  , vmweak,      true,  Monitor::_safepoint_check_never);
 228   def(ResolvedMethodTableWeakActive_lock   , PaddedMutex  , vmweak-1,    true,  Monitor::_safepoint_check_never);
 229 
 230   def(FullGCCount_lock             , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);      // in support of ExplicitGCInvokesConcurrent
 231   if (UseG1GC) {
 232     def(SATB_Q_CBL_mon             , PaddedMonitor, access,      true,  Monitor::_safepoint_check_never);
 233 
 234     def(DirtyCardQ_CBL_mon         , PaddedMonitor, access,      true,  Monitor::_safepoint_check_never);
 235     def(Shared_DirtyCardQ_lock     , PaddedMutex  , access + 1,  true,  Monitor::_safepoint_check_never);
 236 
 237     def(FreeList_lock              , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 238     def(OldSets_lock               , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 239     def(RootRegionScan_lock        , PaddedMonitor, leaf     ,   true,  Monitor::_safepoint_check_never);
 240 
 241     def(StringDedupQueue_lock      , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 242     def(StringDedupTable_lock      , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 243 
 244     def(MarkStackFreeList_lock     , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 245     def(MarkStackChunkList_lock    , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 246 
 247     def(MonitoringSupport_lock     , PaddedMutex  , native   ,   true,  Monitor::_safepoint_check_never);      // used for serviceability monitoring support
 248   }
 249   if (UseShenandoahGC) {
 250     def(SATB_Q_CBL_mon             , PaddedMonitor, access,      true,  Monitor::_safepoint_check_never);
 251 
 252     def(StringDedupQueue_lock      , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 253     def(StringDedupTable_lock      , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 254   }
 255   def(ParGCRareEvent_lock          , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_always);
 256   def(CGCPhaseManager_lock         , PaddedMonitor, leaf,        false, Monitor::_safepoint_check_always);
 257   def(CodeCache_lock               , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 258   def(RawMonitor_lock              , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 259   def(OopMapCacheAlloc_lock        , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_always); // used for oop_map_cache allocation.
 260 
 261   def(MetaspaceExpand_lock         , PaddedMutex  , leaf-1,      true,  Monitor::_safepoint_check_never);
 262   def(ClassLoaderDataGraph_lock    , PaddedMutex  , nonleaf,     true,  Monitor::_safepoint_check_always);
 263 
 264   def(Patching_lock                , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);      // used for safepointing and code patching.
 265   def(OsrList_lock                 , PaddedMutex  , special-1,   true,  Monitor::_safepoint_check_never);
 266   def(CompiledMethod_lock          , PaddedMutex  , special-1,   true,  Monitor::_safepoint_check_never);
 267   def(Service_lock                 , PaddedMonitor, special,     true,  Monitor::_safepoint_check_never);      // used for service thread operations
 268   def(JmethodIdCreation_lock       , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_always); // used for creating jmethodIDs.
 269 
 270   def(SystemDictionary_lock        , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_always);
 271   def(ProtectionDomainSet_lock     , PaddedMutex  , leaf-1,      true,  Monitor::_safepoint_check_never);




  66 Mutex*   ExpandHeap_lock              = NULL;
  67 Mutex*   AdapterHandlerLibrary_lock   = NULL;
  68 Mutex*   SignatureHandlerLibrary_lock = NULL;
  69 Mutex*   VtableStubs_lock             = NULL;
  70 Mutex*   SymbolArena_lock             = NULL;
  71 Monitor* StringDedupQueue_lock        = NULL;
  72 Mutex*   StringDedupTable_lock        = NULL;
  73 Monitor* CodeCache_lock               = NULL;
  74 Mutex*   MethodData_lock              = NULL;
  75 Mutex*   TouchedMethodLog_lock        = NULL;
  76 Mutex*   RetData_lock                 = NULL;
  77 Monitor* VMOperationQueue_lock        = NULL;
  78 Monitor* VMOperationRequest_lock      = NULL;
  79 Monitor* SerializePage_lock           = NULL;
  80 Monitor* Threads_lock                 = NULL;
  81 Mutex*   NonJavaThreadsList_lock      = NULL;
  82 Mutex*   NonJavaThreadsListSync_lock  = NULL;
  83 Monitor* CGC_lock                     = NULL;
  84 Monitor* STS_lock                     = NULL;
  85 Monitor* FullGCCount_lock             = NULL;

  86 Monitor* DirtyCardQ_CBL_mon           = NULL;
  87 Mutex*   Shared_DirtyCardQ_lock       = NULL;
  88 Mutex*   MarkStackFreeList_lock       = NULL;
  89 Mutex*   MarkStackChunkList_lock      = NULL;
  90 Mutex*   MonitoringSupport_lock       = NULL;
  91 Mutex*   ParGCRareEvent_lock          = NULL;
  92 Monitor* CGCPhaseManager_lock         = NULL;
  93 Mutex*   Compile_lock                 = NULL;
  94 Monitor* MethodCompileQueue_lock      = NULL;
  95 Monitor* CompileThread_lock           = NULL;
  96 Monitor* Compilation_lock             = NULL;
  97 Mutex*   CompileTaskAlloc_lock        = NULL;
  98 Mutex*   CompileStatistics_lock       = NULL;
  99 Mutex*   DirectivesStack_lock         = NULL;
 100 Mutex*   MultiArray_lock              = NULL;
 101 Monitor* Terminator_lock              = NULL;
 102 Monitor* InitCompleted_lock           = NULL;
 103 Monitor* BeforeExit_lock              = NULL;
 104 Monitor* Notify_lock                  = NULL;
 105 Mutex*   ProfilePrint_lock            = NULL;


 211 }
 212 
 213 // Using Padded subclasses to prevent false sharing of these global monitors and mutexes.
 214 void mutex_init() {
 215   def(tty_lock                     , PaddedMutex  , tty,         true,  Monitor::_safepoint_check_never);      // allow to lock in VM
 216 
 217   def(CGC_lock                     , PaddedMonitor, special,     true,  Monitor::_safepoint_check_never);      // coordinate between fore- and background GC
 218   def(STS_lock                     , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 219 
 220   def(VMWeakAlloc_lock             , PaddedMutex  , vmweak,      true,  Monitor::_safepoint_check_never);
 221   def(VMWeakActive_lock            , PaddedMutex  , vmweak-1,    true,  Monitor::_safepoint_check_never);
 222 
 223   def(StringTableWeakAlloc_lock    , PaddedMutex  , vmweak,      true,  Monitor::_safepoint_check_never);
 224   def(StringTableWeakActive_lock   , PaddedMutex  , vmweak-1,    true,  Monitor::_safepoint_check_never);
 225 
 226   def(ResolvedMethodTableWeakAlloc_lock    , PaddedMutex  , vmweak,      true,  Monitor::_safepoint_check_never);
 227   def(ResolvedMethodTableWeakActive_lock   , PaddedMutex  , vmweak-1,    true,  Monitor::_safepoint_check_never);
 228 
 229   def(FullGCCount_lock             , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);      // in support of ExplicitGCInvokesConcurrent
 230   if (UseG1GC) {


 231     def(DirtyCardQ_CBL_mon         , PaddedMonitor, access,      true,  Monitor::_safepoint_check_never);
 232     def(Shared_DirtyCardQ_lock     , PaddedMutex  , access + 1,  true,  Monitor::_safepoint_check_never);
 233 
 234     def(FreeList_lock              , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 235     def(OldSets_lock               , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 236     def(RootRegionScan_lock        , PaddedMonitor, leaf     ,   true,  Monitor::_safepoint_check_never);
 237 
 238     def(StringDedupQueue_lock      , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 239     def(StringDedupTable_lock      , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 240 
 241     def(MarkStackFreeList_lock     , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 242     def(MarkStackChunkList_lock    , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 243 
 244     def(MonitoringSupport_lock     , PaddedMutex  , native   ,   true,  Monitor::_safepoint_check_never);      // used for serviceability monitoring support
 245   }
 246   if (UseShenandoahGC) {


 247     def(StringDedupQueue_lock      , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 248     def(StringDedupTable_lock      , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 249   }
 250   def(ParGCRareEvent_lock          , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_always);
 251   def(CGCPhaseManager_lock         , PaddedMonitor, leaf,        false, Monitor::_safepoint_check_always);
 252   def(CodeCache_lock               , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 253   def(RawMonitor_lock              , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 254   def(OopMapCacheAlloc_lock        , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_always); // used for oop_map_cache allocation.
 255 
 256   def(MetaspaceExpand_lock         , PaddedMutex  , leaf-1,      true,  Monitor::_safepoint_check_never);
 257   def(ClassLoaderDataGraph_lock    , PaddedMutex  , nonleaf,     true,  Monitor::_safepoint_check_always);
 258 
 259   def(Patching_lock                , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);      // used for safepointing and code patching.
 260   def(OsrList_lock                 , PaddedMutex  , special-1,   true,  Monitor::_safepoint_check_never);
 261   def(CompiledMethod_lock          , PaddedMutex  , special-1,   true,  Monitor::_safepoint_check_never);
 262   def(Service_lock                 , PaddedMonitor, special,     true,  Monitor::_safepoint_check_never);      // used for service thread operations
 263   def(JmethodIdCreation_lock       , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_always); // used for creating jmethodIDs.
 264 
 265   def(SystemDictionary_lock        , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_always);
 266   def(ProtectionDomainSet_lock     , PaddedMutex  , leaf-1,      true,  Monitor::_safepoint_check_never);


< prev index next >