mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-15 16:44:36 +02:00
8272797: Mutex with rank safepoint_check_never imply allow_vm_block
Reviewed-by: dholmes, pchilanomate
This commit is contained in:
parent
f11e099a14
commit
98b9d98032
40 changed files with 125 additions and 109 deletions
|
@ -200,10 +200,10 @@ void assert_locked_or_safepoint_or_handshake(const Mutex* lock, const JavaThread
|
|||
}
|
||||
#endif
|
||||
|
||||
#define def(var, type, pri, vm_block, safepoint_check_allowed ) { \
|
||||
var = new type(Mutex::pri, #var, vm_block, Mutex::safepoint_check_allowed); \
|
||||
assert(_num_mutex < MAX_NUM_MUTEX, "increase MAX_NUM_MUTEX"); \
|
||||
_mutex_array[_num_mutex++] = var; \
|
||||
#define def(var, type, pri, vm_block, safepoint_check_allowed ) { \
|
||||
var = new type(Mutex::pri, #var, Mutex::safepoint_check_allowed, vm_block); \
|
||||
assert(_num_mutex < MAX_NUM_MUTEX, "increase MAX_NUM_MUTEX"); \
|
||||
_mutex_array[_num_mutex++] = var; \
|
||||
}
|
||||
|
||||
// Using Padded subclasses to prevent false sharing of these global monitors and mutexes.
|
||||
|
@ -288,14 +288,14 @@ void mutex_init() {
|
|||
def(Heap_lock , PaddedMonitor, nonleaf+1, false, _safepoint_check_always); // Doesn't safepoint check during termination.
|
||||
def(JfieldIdCreation_lock , PaddedMutex , nonleaf+1, true, _safepoint_check_always); // jfieldID, Used in VM_Operation
|
||||
|
||||
def(CompiledIC_lock , PaddedMutex , nonleaf+2, false, _safepoint_check_never); // locks VtableStubs_lock, InlineCacheBuffer_lock
|
||||
def(CompiledIC_lock , PaddedMutex , nonleaf+2, true, _safepoint_check_never); // locks VtableStubs_lock, InlineCacheBuffer_lock
|
||||
def(CompileTaskAlloc_lock , PaddedMutex , nonleaf+2, true, _safepoint_check_always);
|
||||
def(CompileStatistics_lock , PaddedMutex , nonleaf+2, false, _safepoint_check_always);
|
||||
def(DirectivesStack_lock , PaddedMutex , special, true, _safepoint_check_never);
|
||||
def(MultiArray_lock , PaddedMutex , nonleaf+2, false, _safepoint_check_always);
|
||||
|
||||
def(JvmtiThreadState_lock , PaddedMutex , nonleaf+2, false, _safepoint_check_always); // Used by JvmtiThreadState/JvmtiEventController
|
||||
def(EscapeBarrier_lock , PaddedMonitor, leaf, false, _safepoint_check_never); // Used to synchronize object reallocation/relocking triggered by JVMTI
|
||||
def(EscapeBarrier_lock , PaddedMonitor, leaf, true, _safepoint_check_never); // Used to synchronize object reallocation/relocking triggered by JVMTI
|
||||
def(Management_lock , PaddedMutex , nonleaf+2, false, _safepoint_check_always); // used for JVM management
|
||||
|
||||
def(ConcurrentGCBreakpoints_lock , PaddedMonitor, nonleaf, true, _safepoint_check_always);
|
||||
|
@ -313,19 +313,19 @@ void mutex_init() {
|
|||
def(Zip_lock , PaddedMonitor, leaf, true, _safepoint_check_never);
|
||||
|
||||
if (WhiteBoxAPI) {
|
||||
def(Compilation_lock , PaddedMonitor, leaf, false, _safepoint_check_never);
|
||||
def(Compilation_lock , PaddedMonitor, leaf, true, _safepoint_check_never);
|
||||
}
|
||||
|
||||
#if INCLUDE_JFR
|
||||
def(JfrMsg_lock , PaddedMonitor, leaf, true, _safepoint_check_always);
|
||||
def(JfrBuffer_lock , PaddedMutex , leaf, true, _safepoint_check_never);
|
||||
def(JfrStream_lock , PaddedMutex , nonleaf + 1, false, _safepoint_check_never);
|
||||
def(JfrStream_lock , PaddedMutex , nonleaf + 1, true, _safepoint_check_never);
|
||||
def(JfrStacktrace_lock , PaddedMutex , stackwatermark-1, true, _safepoint_check_never);
|
||||
def(JfrThreadSampler_lock , PaddedMonitor, leaf, true, _safepoint_check_never);
|
||||
#endif
|
||||
|
||||
#ifndef SUPPORTS_NATIVE_CX8
|
||||
def(UnsafeJlong_lock , PaddedMutex , special, false, _safepoint_check_never);
|
||||
def(UnsafeJlong_lock , PaddedMutex , special, true, _safepoint_check_never);
|
||||
#endif
|
||||
|
||||
def(CodeHeapStateAnalytics_lock , PaddedMutex , nonleaf+6, false, _safepoint_check_always);
|
||||
|
@ -347,7 +347,7 @@ void mutex_init() {
|
|||
def(ClassListFile_lock , PaddedMutex , leaf, true, _safepoint_check_never);
|
||||
def(LambdaFormInvokers_lock , PaddedMutex , nonleaf+2, false, _safepoint_check_always);
|
||||
#endif // INCLUDE_CDS
|
||||
def(Bootclasspath_lock , PaddedMutex , leaf, false, _safepoint_check_never);
|
||||
def(Bootclasspath_lock , PaddedMutex , leaf, true, _safepoint_check_never);
|
||||
|
||||
#if INCLUDE_JVMCI
|
||||
def(JVMCI_lock , PaddedMonitor, nonleaf+2, true, _safepoint_check_always);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue