1.1 --- a/src/share/vm/runtime/mutexLocker.cpp Mon Jan 09 10:27:24 2012 +0100 1.2 +++ b/src/share/vm/runtime/mutexLocker.cpp Wed Jan 11 17:34:02 2012 -0500 1.3 @@ -132,7 +132,13 @@ 1.4 Monitor* GCTaskManager_lock = NULL; 1.5 1.6 Mutex* Management_lock = NULL; 1.7 -Monitor* Service_lock = NULL; 1.8 +Monitor* Service_lock = NULL; 1.9 +Mutex* Stacktrace_lock = NULL; 1.10 + 1.11 +Monitor* JfrQuery_lock = NULL; 1.12 +Monitor* JfrMsg_lock = NULL; 1.13 +Mutex* JfrBuffer_lock = NULL; 1.14 +Mutex* JfrStream_lock = NULL; 1.15 1.16 #define MAX_NUM_MUTEX 128 1.17 static Monitor * _mutex_array[MAX_NUM_MUTEX]; 1.18 @@ -207,6 +213,7 @@ 1.19 def(Patching_lock , Mutex , special, true ); // used for safepointing and code patching. 1.20 def(ObjAllocPost_lock , Monitor, special, false); 1.21 def(Service_lock , Monitor, special, true ); // used for service thread operations 1.22 + def(Stacktrace_lock , Mutex, special, true ); // used for JFR stacktrace database 1.23 def(JmethodIdCreation_lock , Mutex , leaf, true ); // used for creating jmethodIDs. 1.24 1.25 def(SystemDictionary_lock , Monitor, leaf, true ); // lookups done by VM thread 1.26 @@ -271,6 +278,11 @@ 1.27 def(Debug3_lock , Mutex , nonleaf+4, true ); 1.28 def(ProfileVM_lock , Monitor, nonleaf+4, false); // used for profiling of the VMThread 1.29 def(CompileThread_lock , Monitor, nonleaf+5, false ); 1.30 + 1.31 + def(JfrQuery_lock , Monitor, nonleaf, true); // JFR locks, keep these in consecutive order 1.32 + def(JfrMsg_lock , Monitor, nonleaf+2, true); 1.33 + def(JfrBuffer_lock , Mutex, nonleaf+3, true); 1.34 + def(JfrStream_lock , Mutex, nonleaf+4, true); 1.35 } 1.36 1.37 GCMutexLocker::GCMutexLocker(Monitor * mutex) {