hotspot/src/share/vm/runtime/mutexLocker.cpp
changeset 36357 953ab5f53cff
parent 35228 e7bbfb90fd31
child 37129 af29e306e50b
child 36508 5f9eee6b383b
equal deleted inserted replaced
36354:28bbe66a0498 36357:953ab5f53cff
     1 /*
     1 /*
     2  * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    48 Mutex*   MemberNameTable_lock         = NULL;
    48 Mutex*   MemberNameTable_lock         = NULL;
    49 Mutex*   JmethodIdCreation_lock       = NULL;
    49 Mutex*   JmethodIdCreation_lock       = NULL;
    50 Mutex*   JfieldIdCreation_lock        = NULL;
    50 Mutex*   JfieldIdCreation_lock        = NULL;
    51 Monitor* JNICritical_lock             = NULL;
    51 Monitor* JNICritical_lock             = NULL;
    52 Mutex*   JvmtiThreadState_lock        = NULL;
    52 Mutex*   JvmtiThreadState_lock        = NULL;
    53 Monitor* JvmtiPendingEvent_lock       = NULL;
       
    54 Monitor* Heap_lock                    = NULL;
    53 Monitor* Heap_lock                    = NULL;
    55 Mutex*   ExpandHeap_lock              = NULL;
    54 Mutex*   ExpandHeap_lock              = NULL;
    56 Mutex*   AdapterHandlerLibrary_lock   = NULL;
    55 Mutex*   AdapterHandlerLibrary_lock   = NULL;
    57 Mutex*   SignatureHandlerLibrary_lock = NULL;
    56 Mutex*   SignatureHandlerLibrary_lock = NULL;
    58 Mutex*   VtableStubs_lock             = NULL;
    57 Mutex*   VtableStubs_lock             = NULL;
    71 Monitor* Threads_lock                 = NULL;
    70 Monitor* Threads_lock                 = NULL;
    72 Monitor* CGC_lock                     = NULL;
    71 Monitor* CGC_lock                     = NULL;
    73 Monitor* STS_lock                     = NULL;
    72 Monitor* STS_lock                     = NULL;
    74 Monitor* SLT_lock                     = NULL;
    73 Monitor* SLT_lock                     = NULL;
    75 Monitor* FullGCCount_lock             = NULL;
    74 Monitor* FullGCCount_lock             = NULL;
    76 Monitor* CMark_lock                   = NULL;
       
    77 Mutex*   CMRegionStack_lock           = NULL;
       
    78 Mutex*   SATB_Q_FL_lock               = NULL;
    75 Mutex*   SATB_Q_FL_lock               = NULL;
    79 Monitor* SATB_Q_CBL_mon               = NULL;
    76 Monitor* SATB_Q_CBL_mon               = NULL;
    80 Mutex*   Shared_SATB_Q_lock           = NULL;
    77 Mutex*   Shared_SATB_Q_lock           = NULL;
    81 Mutex*   DirtyCardQ_FL_lock           = NULL;
    78 Mutex*   DirtyCardQ_FL_lock           = NULL;
    82 Monitor* DirtyCardQ_CBL_mon           = NULL;
    79 Monitor* DirtyCardQ_CBL_mon           = NULL;
    92 Mutex*   DirectivesStack_lock         = NULL;
    89 Mutex*   DirectivesStack_lock         = NULL;
    93 Mutex*   MultiArray_lock              = NULL;
    90 Mutex*   MultiArray_lock              = NULL;
    94 Monitor* Terminator_lock              = NULL;
    91 Monitor* Terminator_lock              = NULL;
    95 Monitor* BeforeExit_lock              = NULL;
    92 Monitor* BeforeExit_lock              = NULL;
    96 Monitor* Notify_lock                  = NULL;
    93 Monitor* Notify_lock                  = NULL;
    97 Monitor* Interrupt_lock               = NULL;
       
    98 Monitor* ProfileVM_lock               = NULL;
       
    99 Mutex*   ProfilePrint_lock            = NULL;
    94 Mutex*   ProfilePrint_lock            = NULL;
   100 Mutex*   ExceptionCache_lock          = NULL;
    95 Mutex*   ExceptionCache_lock          = NULL;
   101 Monitor* ObjAllocPost_lock            = NULL;
       
   102 Mutex*   OsrList_lock                 = NULL;
    96 Mutex*   OsrList_lock                 = NULL;
   103 
    97 
   104 #ifndef PRODUCT
    98 #ifndef PRODUCT
   105 Mutex*   FullGCALot_lock              = NULL;
    99 Mutex*   FullGCALot_lock              = NULL;
   106 #endif
   100 #endif
   182   if (UseConcMarkSweepGC || UseG1GC) {
   176   if (UseConcMarkSweepGC || UseG1GC) {
   183     def(FullGCCount_lock           , Monitor, leaf,        true,  Monitor::_safepoint_check_never);      // in support of ExplicitGCInvokesConcurrent
   177     def(FullGCCount_lock           , Monitor, leaf,        true,  Monitor::_safepoint_check_never);      // in support of ExplicitGCInvokesConcurrent
   184   }
   178   }
   185   if (UseG1GC) {
   179   if (UseG1GC) {
   186 
   180 
   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);
   181     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);
   182     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);
   183     def(Shared_SATB_Q_lock         , Mutex,   nonleaf,     true,  Monitor::_safepoint_check_never);
   192 
   184 
   193     def(DirtyCardQ_FL_lock         , Mutex  , special,     true,  Monitor::_safepoint_check_never);
   185     def(DirtyCardQ_FL_lock         , Mutex  , special,     true,  Monitor::_safepoint_check_never);
   204     def(StringDedupTable_lock      , Mutex  , leaf,        true,  Monitor::_safepoint_check_never);
   196     def(StringDedupTable_lock      , Mutex  , leaf,        true,  Monitor::_safepoint_check_never);
   205   }
   197   }
   206   def(ParGCRareEvent_lock          , Mutex  , leaf     ,   true,  Monitor::_safepoint_check_sometimes);
   198   def(ParGCRareEvent_lock          , Mutex  , leaf     ,   true,  Monitor::_safepoint_check_sometimes);
   207   def(DerivedPointerTableGC_lock   , Mutex,   leaf,        true,  Monitor::_safepoint_check_never);
   199   def(DerivedPointerTableGC_lock   , Mutex,   leaf,        true,  Monitor::_safepoint_check_never);
   208   def(CodeCache_lock               , Mutex  , special,     true,  Monitor::_safepoint_check_never);
   200   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);
   201   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.
   202   def(OopMapCacheAlloc_lock        , Mutex,   leaf,        true,  Monitor::_safepoint_check_always);     // used for oop_map_cache allocation.
   212 
   203 
   213   def(Patching_lock                , Mutex  , special,     true,  Monitor::_safepoint_check_never);      // used for safepointing and code patching.
   204   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
   205   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.
   206   def(JmethodIdCreation_lock       , Mutex  , leaf,        true,  Monitor::_safepoint_check_always);     // used for creating jmethodIDs.
   217 
   207 
   218   def(SystemDictionary_lock        , Monitor, leaf,        true,  Monitor::_safepoint_check_always);     // lookups done by VM thread
   208   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);
   209   def(PackageTable_lock            , Mutex  , leaf,        false, Monitor::_safepoint_check_always);
   265   def(CompileStatistics_lock       , Mutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);
   255   def(CompileStatistics_lock       , Mutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);
   266   def(DirectivesStack_lock         , Mutex  , special,     true,  Monitor::_safepoint_check_never);
   256   def(DirectivesStack_lock         , Mutex  , special,     true,  Monitor::_safepoint_check_never);
   267   def(MultiArray_lock              , Mutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // locks SymbolTable_lock
   257   def(MultiArray_lock              , Mutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // locks SymbolTable_lock
   268 
   258 
   269   def(JvmtiThreadState_lock        , Mutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // Used by JvmtiThreadState/JvmtiEventController
   259   def(JvmtiThreadState_lock        , Mutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // Used by JvmtiThreadState/JvmtiEventController
   270   def(JvmtiPendingEvent_lock       , Monitor, nonleaf,     false, Monitor::_safepoint_check_never);      // Used by JvmtiCodeBlobEvents
       
   271   def(Management_lock              , Mutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // used for JVM management
   260   def(Management_lock              , Mutex  , nonleaf+2,   false, Monitor::_safepoint_check_always);     // used for JVM management
   272 
   261 
   273   def(Compile_lock                 , Mutex  , nonleaf+3,   true,  Monitor::_safepoint_check_sometimes);
   262   def(Compile_lock                 , Mutex  , nonleaf+3,   true,  Monitor::_safepoint_check_sometimes);
   274   def(MethodData_lock              , Mutex  , nonleaf+3,   false, Monitor::_safepoint_check_always);
   263   def(MethodData_lock              , Mutex  , nonleaf+3,   false, Monitor::_safepoint_check_always);
   275   def(TouchedMethodLog_lock        , Mutex  , nonleaf+3,   false, Monitor::_safepoint_check_always);
   264   def(TouchedMethodLog_lock        , Mutex  , nonleaf+3,   false, Monitor::_safepoint_check_always);
   276 
   265 
   277   def(MethodCompileQueue_lock      , Monitor, nonleaf+4,   true,  Monitor::_safepoint_check_always);
   266   def(MethodCompileQueue_lock      , Monitor, nonleaf+4,   true,  Monitor::_safepoint_check_always);
   278   def(Debug2_lock                  , Mutex  , nonleaf+4,   true,  Monitor::_safepoint_check_never);
   267   def(Debug2_lock                  , Mutex  , nonleaf+4,   true,  Monitor::_safepoint_check_never);
   279   def(Debug3_lock                  , Mutex  , nonleaf+4,   true,  Monitor::_safepoint_check_never);
   268   def(Debug3_lock                  , Mutex  , nonleaf+4,   true,  Monitor::_safepoint_check_never);
   280   def(ProfileVM_lock               , Monitor, special,     false, Monitor::_safepoint_check_never);      // used for profiling of the VMThread
       
   281   def(CompileThread_lock           , Monitor, nonleaf+5,   false, Monitor::_safepoint_check_always);
   269   def(CompileThread_lock           , Monitor, nonleaf+5,   false, Monitor::_safepoint_check_always);
   282   def(PeriodicTask_lock            , Monitor, nonleaf+5,   true,  Monitor::_safepoint_check_sometimes);
   270   def(PeriodicTask_lock            , Monitor, nonleaf+5,   true,  Monitor::_safepoint_check_sometimes);
   283   if (WhiteBoxAPI) {
   271   if (WhiteBoxAPI) {
   284     def(Compilation_lock           , Monitor, leaf,        false, Monitor::_safepoint_check_never);
   272     def(Compilation_lock           , Monitor, leaf,        false, Monitor::_safepoint_check_never);
   285   }
   273   }