312 def(PeriodicTask_lock , PaddedMonitor, nonleaf+5, true, Monitor::_safepoint_check_sometimes);
313 def(RedefineClasses_lock , PaddedMonitor, nonleaf+5, true, Monitor::_safepoint_check_always);
314
315 def(ThreadHeapSampler_lock , PaddedMutex, nonleaf, false, Monitor::_safepoint_check_never);
316
317 if (WhiteBoxAPI) {
318 def(Compilation_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_never);
319 }
320
321 #if INCLUDE_JFR
322 def(JfrMsg_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always);
323 def(JfrBuffer_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
324 def(JfrStream_lock , PaddedMutex , leaf+1, true, Monitor::_safepoint_check_never); // ensure to rank lower than 'safepoint'
325 def(JfrStacktrace_lock , PaddedMutex , special, true, Monitor::_safepoint_check_sometimes);
326 #endif
327
328 #ifndef SUPPORTS_NATIVE_CX8
329 def(UnsafeJlong_lock , PaddedMutex , special, false, Monitor::_safepoint_check_never);
330 #endif
331
332 def(CodeHeapStateAnalytics_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
333 def(ThreadIdTableCreate_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always);
334 }
335
336 GCMutexLocker::GCMutexLocker(Monitor * mutex) {
337 if (SafepointSynchronize::is_at_safepoint()) {
338 _locked = false;
339 } else {
340 _mutex = mutex;
341 _locked = true;
342 _mutex->lock();
343 }
344 }
345
346 // Print all mutexes/monitors that are currently owned by a thread; called
347 // by fatal error handler.
348 void print_owned_locks_on_error(outputStream* st) {
349 st->print("VM Mutex/Monitor currently owned by a thread: ");
350 bool none = true;
351 for (int i = 0; i < _num_mutex; i++) {
352 // see if it has an owner
|
312 def(PeriodicTask_lock , PaddedMonitor, nonleaf+5, true, Monitor::_safepoint_check_sometimes);
313 def(RedefineClasses_lock , PaddedMonitor, nonleaf+5, true, Monitor::_safepoint_check_always);
314
315 def(ThreadHeapSampler_lock , PaddedMutex, nonleaf, false, Monitor::_safepoint_check_never);
316
317 if (WhiteBoxAPI) {
318 def(Compilation_lock , PaddedMonitor, leaf, false, Monitor::_safepoint_check_never);
319 }
320
321 #if INCLUDE_JFR
322 def(JfrMsg_lock , PaddedMonitor, leaf, true, Monitor::_safepoint_check_always);
323 def(JfrBuffer_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
324 def(JfrStream_lock , PaddedMutex , leaf+1, true, Monitor::_safepoint_check_never); // ensure to rank lower than 'safepoint'
325 def(JfrStacktrace_lock , PaddedMutex , special, true, Monitor::_safepoint_check_sometimes);
326 #endif
327
328 #ifndef SUPPORTS_NATIVE_CX8
329 def(UnsafeJlong_lock , PaddedMutex , special, false, Monitor::_safepoint_check_never);
330 #endif
331
332 def(CodeHeapStateAnalytics_lock , PaddedMutex , nonleaf+6, false, Monitor::_safepoint_check_always);
333 def(ThreadIdTableCreate_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always);
334 }
335
336 GCMutexLocker::GCMutexLocker(Monitor * mutex) {
337 if (SafepointSynchronize::is_at_safepoint()) {
338 _locked = false;
339 } else {
340 _mutex = mutex;
341 _locked = true;
342 _mutex->lock();
343 }
344 }
345
346 // Print all mutexes/monitors that are currently owned by a thread; called
347 // by fatal error handler.
348 void print_owned_locks_on_error(outputStream* st) {
349 st->print("VM Mutex/Monitor currently owned by a thread: ");
350 bool none = true;
351 for (int i = 0; i < _num_mutex; i++) {
352 // see if it has an owner
|