< prev index next >

src/hotspot/share/runtime/mutexLocker.cpp

Print this page
rev 53868 : imported patch remove_shared_satb_lock


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


 195 }
 196 
 197 // Using Padded subclasses to prevent false sharing of these global monitors and mutexes.
 198 void mutex_init() {
 199   def(tty_lock                     , PaddedMutex  , tty,         true,  Monitor::_safepoint_check_never);      // allow to lock in VM
 200 
 201   def(CGC_lock                     , PaddedMonitor, special,     true,  Monitor::_safepoint_check_never);      // coordinate between fore- and background GC
 202   def(STS_lock                     , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 203 
 204   def(VMWeakAlloc_lock             , PaddedMutex  , vmweak,      true,  Monitor::_safepoint_check_never);
 205   def(VMWeakActive_lock            , PaddedMutex  , vmweak-1,    true,  Monitor::_safepoint_check_never);
 206 
 207   def(StringTableWeakAlloc_lock    , PaddedMutex  , vmweak,      true,  Monitor::_safepoint_check_never);
 208   def(StringTableWeakActive_lock   , PaddedMutex  , vmweak-1,    true,  Monitor::_safepoint_check_never);
 209 
 210   if (UseConcMarkSweepGC || UseG1GC) {
 211     def(FullGCCount_lock           , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);      // in support of ExplicitGCInvokesConcurrent
 212   }
 213   if (UseG1GC) {
 214     def(SATB_Q_CBL_mon             , PaddedMonitor, access,      true,  Monitor::_safepoint_check_never);
 215     def(Shared_SATB_Q_lock         , PaddedMutex  , access + 1,  true,  Monitor::_safepoint_check_never);
 216 
 217     def(DirtyCardQ_CBL_mon         , PaddedMonitor, access,      true,  Monitor::_safepoint_check_never);
 218     def(Shared_DirtyCardQ_lock     , PaddedMutex  , access + 1,  true,  Monitor::_safepoint_check_never);
 219 
 220     def(FreeList_lock              , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 221     def(OldSets_lock               , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 222     def(RootRegionScan_lock        , PaddedMonitor, leaf     ,   true,  Monitor::_safepoint_check_never);
 223 
 224     def(StringDedupQueue_lock      , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 225     def(StringDedupTable_lock      , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 226 
 227     def(MarkStackFreeList_lock     , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 228     def(MarkStackChunkList_lock    , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 229 
 230     def(MonitoringSupport_lock     , PaddedMutex  , native   ,   true,  Monitor::_safepoint_check_never);      // used for serviceability monitoring support
 231   }
 232   if (UseShenandoahGC) {
 233     def(SATB_Q_CBL_mon             , PaddedMonitor, access,      true,  Monitor::_safepoint_check_never);
 234     def(Shared_SATB_Q_lock         , PaddedMutex  , access + 1,  true,  Monitor::_safepoint_check_never);
 235 
 236     def(StringDedupQueue_lock      , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 237     def(StringDedupTable_lock      , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 238   }
 239   def(ParGCRareEvent_lock          , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_sometimes);
 240   def(DerivedPointerTableGC_lock   , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 241   def(CGCPhaseManager_lock         , PaddedMonitor, leaf,        false, Monitor::_safepoint_check_sometimes);
 242   def(CodeCache_lock               , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 243   def(RawMonitor_lock              , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 244   def(OopMapCacheAlloc_lock        , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_always);     // used for oop_map_cache allocation.
 245 
 246   def(MetaspaceExpand_lock         , PaddedMutex  , leaf-1,      true,  Monitor::_safepoint_check_never);
 247   def(ClassLoaderDataGraph_lock    , PaddedMutex  , nonleaf,     true,  Monitor::_safepoint_check_always);
 248 
 249   def(Patching_lock                , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);      // used for safepointing and code patching.
 250   def(Service_lock                 , PaddedMonitor, special,     true,  Monitor::_safepoint_check_never);      // used for service thread operations
 251   def(JmethodIdCreation_lock       , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_always);     // used for creating jmethodIDs.
 252 
 253   def(SystemDictionary_lock        , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_always);     // lookups done by VM thread
 254   def(SharedDictionary_lock        , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_always);     // lookups done by VM thread




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

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


 194 }
 195 
 196 // Using Padded subclasses to prevent false sharing of these global monitors and mutexes.
 197 void mutex_init() {
 198   def(tty_lock                     , PaddedMutex  , tty,         true,  Monitor::_safepoint_check_never);      // allow to lock in VM
 199 
 200   def(CGC_lock                     , PaddedMonitor, special,     true,  Monitor::_safepoint_check_never);      // coordinate between fore- and background GC
 201   def(STS_lock                     , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 202 
 203   def(VMWeakAlloc_lock             , PaddedMutex  , vmweak,      true,  Monitor::_safepoint_check_never);
 204   def(VMWeakActive_lock            , PaddedMutex  , vmweak-1,    true,  Monitor::_safepoint_check_never);
 205 
 206   def(StringTableWeakAlloc_lock    , PaddedMutex  , vmweak,      true,  Monitor::_safepoint_check_never);
 207   def(StringTableWeakActive_lock   , PaddedMutex  , vmweak-1,    true,  Monitor::_safepoint_check_never);
 208 
 209   if (UseConcMarkSweepGC || UseG1GC) {
 210     def(FullGCCount_lock           , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);      // in support of ExplicitGCInvokesConcurrent
 211   }
 212   if (UseG1GC) {
 213     def(SATB_Q_CBL_mon             , PaddedMonitor, access,      true,  Monitor::_safepoint_check_never);

 214 
 215     def(DirtyCardQ_CBL_mon         , PaddedMonitor, access,      true,  Monitor::_safepoint_check_never);
 216     def(Shared_DirtyCardQ_lock     , PaddedMutex  , access + 1,  true,  Monitor::_safepoint_check_never);
 217 
 218     def(FreeList_lock              , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 219     def(OldSets_lock               , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 220     def(RootRegionScan_lock        , PaddedMonitor, leaf     ,   true,  Monitor::_safepoint_check_never);
 221 
 222     def(StringDedupQueue_lock      , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 223     def(StringDedupTable_lock      , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 224 
 225     def(MarkStackFreeList_lock     , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 226     def(MarkStackChunkList_lock    , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 227 
 228     def(MonitoringSupport_lock     , PaddedMutex  , native   ,   true,  Monitor::_safepoint_check_never);      // used for serviceability monitoring support
 229   }
 230   if (UseShenandoahGC) {
 231     def(SATB_Q_CBL_mon             , PaddedMonitor, access,      true,  Monitor::_safepoint_check_never);

 232 
 233     def(StringDedupQueue_lock      , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_never);
 234     def(StringDedupTable_lock      , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 235   }
 236   def(ParGCRareEvent_lock          , PaddedMutex  , leaf     ,   true,  Monitor::_safepoint_check_sometimes);
 237   def(DerivedPointerTableGC_lock   , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_never);
 238   def(CGCPhaseManager_lock         , PaddedMonitor, leaf,        false, Monitor::_safepoint_check_sometimes);
 239   def(CodeCache_lock               , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 240   def(RawMonitor_lock              , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);
 241   def(OopMapCacheAlloc_lock        , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_always);     // used for oop_map_cache allocation.
 242 
 243   def(MetaspaceExpand_lock         , PaddedMutex  , leaf-1,      true,  Monitor::_safepoint_check_never);
 244   def(ClassLoaderDataGraph_lock    , PaddedMutex  , nonleaf,     true,  Monitor::_safepoint_check_always);
 245 
 246   def(Patching_lock                , PaddedMutex  , special,     true,  Monitor::_safepoint_check_never);      // used for safepointing and code patching.
 247   def(Service_lock                 , PaddedMonitor, special,     true,  Monitor::_safepoint_check_never);      // used for service thread operations
 248   def(JmethodIdCreation_lock       , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_always);     // used for creating jmethodIDs.
 249 
 250   def(SystemDictionary_lock        , PaddedMonitor, leaf,        true,  Monitor::_safepoint_check_always);     // lookups done by VM thread
 251   def(SharedDictionary_lock        , PaddedMutex  , leaf,        true,  Monitor::_safepoint_check_always);     // lookups done by VM thread


< prev index next >