< prev index next >

src/share/vm/runtime/mutexLocker.cpp

Print this page
rev 7695 : 8069273: Reduce Hot Card Cache Lock contention
Reviewed-by: tschatzl


 103 #ifndef PRODUCT
 104 Mutex*   FullGCALot_lock              = NULL;
 105 #endif
 106 
 107 Mutex*   Debug1_lock                  = NULL;
 108 Mutex*   Debug2_lock                  = NULL;
 109 Mutex*   Debug3_lock                  = NULL;
 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 Mutex*   MMUTracker_lock              = NULL;
 123 Mutex*   HotCardCache_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 
 131 #ifdef INCLUDE_TRACE
 132 Mutex*   JfrStacktrace_lock           = NULL;
 133 Monitor* JfrMsg_lock                  = NULL;
 134 Mutex*   JfrBuffer_lock               = NULL;
 135 Mutex*   JfrStream_lock               = NULL;
 136 Mutex*   JfrThreadGroups_lock         = NULL;
 137 #endif
 138 
 139 #ifndef SUPPORTS_NATIVE_CX8
 140 Mutex*   UnsafeJlong_lock             = NULL;
 141 #endif
 142 
 143 #define MAX_NUM_MUTEX 128


 182   if (UseConcMarkSweepGC || UseG1GC) {
 183     def(FullGCCount_lock           , Monitor, leaf,        true,  Monitor::_safepoint_check_never);      // in support of ExplicitGCInvokesConcurrent
 184   }
 185   if (UseG1GC) {
 186 
 187     def(CMark_lock                 , Monitor, nonleaf,     true,  Monitor::_safepoint_check_never);      // coordinate concurrent mark thread
 188     def(CMRegionStack_lock         , Mutex,   leaf,        true,  Monitor::_safepoint_check_never);
 189     def(SATB_Q_FL_lock             , Mutex  , special,     true,  Monitor::_safepoint_check_never);
 190     def(SATB_Q_CBL_mon             , Monitor, nonleaf,     true,  Monitor::_safepoint_check_never);
 191     def(Shared_SATB_Q_lock         , Mutex,   nonleaf,     true,  Monitor::_safepoint_check_never);
 192 
 193     def(DirtyCardQ_FL_lock         , Mutex  , special,     true,  Monitor::_safepoint_check_never);
 194     def(DirtyCardQ_CBL_mon         , Monitor, nonleaf,     true,  Monitor::_safepoint_check_never);
 195     def(Shared_DirtyCardQ_lock     , Mutex,   nonleaf,     true,  Monitor::_safepoint_check_never);
 196 
 197     def(FreeList_lock              , Mutex,   leaf     ,   true,  Monitor::_safepoint_check_never);
 198     def(SecondaryFreeList_lock     , Monitor, leaf     ,   true,  Monitor::_safepoint_check_never);
 199     def(OldSets_lock               , Mutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 200     def(RootRegionScan_lock        , Monitor, leaf     ,   true,  Monitor::_safepoint_check_never);
 201     def(MMUTracker_lock            , Mutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 202     def(HotCardCache_lock          , Mutex  , special  ,   true,  Monitor::_safepoint_check_never);
 203     def(EvacFailureStack_lock      , Mutex  , nonleaf  ,   true,  Monitor::_safepoint_check_never);
 204 
 205     def(StringDedupQueue_lock      , Monitor, leaf,        true,  Monitor::_safepoint_check_never);
 206     def(StringDedupTable_lock      , Mutex  , leaf,        true,  Monitor::_safepoint_check_never);
 207   }
 208   def(ParGCRareEvent_lock          , Mutex  , leaf     ,   true,  Monitor::_safepoint_check_sometimes);
 209   def(DerivedPointerTableGC_lock   , Mutex,   leaf,        true,  Monitor::_safepoint_check_never);
 210   def(CodeCache_lock               , Mutex  , special,     true,  Monitor::_safepoint_check_never);
 211   def(Interrupt_lock               , Monitor, special,     true,  Monitor::_safepoint_check_never);      // used for interrupt processing
 212   def(RawMonitor_lock              , Mutex,   special,     true,  Monitor::_safepoint_check_never);
 213   def(OopMapCacheAlloc_lock        , Mutex,   leaf,        true,  Monitor::_safepoint_check_always);     // used for oop_map_cache allocation.
 214 
 215   def(Patching_lock                , Mutex  , special,     true,  Monitor::_safepoint_check_never);      // used for safepointing and code patching.
 216   def(ObjAllocPost_lock            , Monitor, special,     false, Monitor::_safepoint_check_never);
 217   def(Service_lock                 , Monitor, special,     true,  Monitor::_safepoint_check_never);      // used for service thread operations
 218   def(JmethodIdCreation_lock       , Mutex  , leaf,        true,  Monitor::_safepoint_check_always);     // used for creating jmethodIDs.
 219 
 220   def(SystemDictionary_lock        , Monitor, leaf,        true,  Monitor::_safepoint_check_always);     // lookups done by VM thread
 221   def(PackageTable_lock            , Mutex  , leaf,        false, Monitor::_safepoint_check_always);
 222   def(InlineCacheBuffer_lock       , Mutex  , leaf,        true,  Monitor::_safepoint_check_always);




 103 #ifndef PRODUCT
 104 Mutex*   FullGCALot_lock              = NULL;
 105 #endif
 106 
 107 Mutex*   Debug1_lock                  = NULL;
 108 Mutex*   Debug2_lock                  = NULL;
 109 Mutex*   Debug3_lock                  = NULL;
 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 Mutex*   MMUTracker_lock              = NULL;

 123 
 124 Monitor* GCTaskManager_lock           = NULL;
 125 
 126 Mutex*   Management_lock              = NULL;
 127 Monitor* Service_lock                 = NULL;
 128 Monitor* PeriodicTask_lock            = NULL;
 129 
 130 #ifdef INCLUDE_TRACE
 131 Mutex*   JfrStacktrace_lock           = NULL;
 132 Monitor* JfrMsg_lock                  = NULL;
 133 Mutex*   JfrBuffer_lock               = NULL;
 134 Mutex*   JfrStream_lock               = NULL;
 135 Mutex*   JfrThreadGroups_lock         = NULL;
 136 #endif
 137 
 138 #ifndef SUPPORTS_NATIVE_CX8
 139 Mutex*   UnsafeJlong_lock             = NULL;
 140 #endif
 141 
 142 #define MAX_NUM_MUTEX 128


 181   if (UseConcMarkSweepGC || UseG1GC) {
 182     def(FullGCCount_lock           , Monitor, leaf,        true,  Monitor::_safepoint_check_never);      // in support of ExplicitGCInvokesConcurrent
 183   }
 184   if (UseG1GC) {
 185 
 186     def(CMark_lock                 , Monitor, nonleaf,     true,  Monitor::_safepoint_check_never);      // coordinate concurrent mark thread
 187     def(CMRegionStack_lock         , Mutex,   leaf,        true,  Monitor::_safepoint_check_never);
 188     def(SATB_Q_FL_lock             , Mutex  , special,     true,  Monitor::_safepoint_check_never);
 189     def(SATB_Q_CBL_mon             , Monitor, nonleaf,     true,  Monitor::_safepoint_check_never);
 190     def(Shared_SATB_Q_lock         , Mutex,   nonleaf,     true,  Monitor::_safepoint_check_never);
 191 
 192     def(DirtyCardQ_FL_lock         , Mutex  , special,     true,  Monitor::_safepoint_check_never);
 193     def(DirtyCardQ_CBL_mon         , Monitor, nonleaf,     true,  Monitor::_safepoint_check_never);
 194     def(Shared_DirtyCardQ_lock     , Mutex,   nonleaf,     true,  Monitor::_safepoint_check_never);
 195 
 196     def(FreeList_lock              , Mutex,   leaf     ,   true,  Monitor::_safepoint_check_never);
 197     def(SecondaryFreeList_lock     , Monitor, leaf     ,   true,  Monitor::_safepoint_check_never);
 198     def(OldSets_lock               , Mutex  , leaf     ,   true,  Monitor::_safepoint_check_never);
 199     def(RootRegionScan_lock        , Monitor, leaf     ,   true,  Monitor::_safepoint_check_never);
 200     def(MMUTracker_lock            , Mutex  , leaf     ,   true,  Monitor::_safepoint_check_never);

 201     def(EvacFailureStack_lock      , Mutex  , nonleaf  ,   true,  Monitor::_safepoint_check_never);
 202 
 203     def(StringDedupQueue_lock      , Monitor, leaf,        true,  Monitor::_safepoint_check_never);
 204     def(StringDedupTable_lock      , Mutex  , leaf,        true,  Monitor::_safepoint_check_never);
 205   }
 206   def(ParGCRareEvent_lock          , Mutex  , leaf     ,   true,  Monitor::_safepoint_check_sometimes);
 207   def(DerivedPointerTableGC_lock   , Mutex,   leaf,        true,  Monitor::_safepoint_check_never);
 208   def(CodeCache_lock               , Mutex  , special,     true,  Monitor::_safepoint_check_never);
 209   def(Interrupt_lock               , Monitor, special,     true,  Monitor::_safepoint_check_never);      // used for interrupt processing
 210   def(RawMonitor_lock              , Mutex,   special,     true,  Monitor::_safepoint_check_never);
 211   def(OopMapCacheAlloc_lock        , Mutex,   leaf,        true,  Monitor::_safepoint_check_always);     // used for oop_map_cache allocation.
 212 
 213   def(Patching_lock                , Mutex  , special,     true,  Monitor::_safepoint_check_never);      // used for safepointing and code patching.
 214   def(ObjAllocPost_lock            , Monitor, special,     false, Monitor::_safepoint_check_never);
 215   def(Service_lock                 , Monitor, special,     true,  Monitor::_safepoint_check_never);      // used for service thread operations
 216   def(JmethodIdCreation_lock       , Mutex  , leaf,        true,  Monitor::_safepoint_check_always);     // used for creating jmethodIDs.
 217 
 218   def(SystemDictionary_lock        , Monitor, leaf,        true,  Monitor::_safepoint_check_always);     // lookups done by VM thread
 219   def(PackageTable_lock            , Mutex  , leaf,        false, Monitor::_safepoint_check_always);
 220   def(InlineCacheBuffer_lock       , Mutex  , leaf,        true,  Monitor::_safepoint_check_always);


< prev index next >