401 PeriodicTask_lock->unlock();
402 }
403
404 if (JfrMsg_lock->owned_by_self()) {
405 JfrMsg_lock->unlock();
406 }
407
408 if (JfrBuffer_lock->owned_by_self()) {
409 JfrBuffer_lock->unlock();
410 }
411
412 if (JfrStacktrace_lock->owned_by_self()) {
413 JfrStacktrace_lock->unlock();
414 }
415 return true;
416 }
417
418 static volatile int jfr_shutdown_lock = 0;
419
420 static bool guard_reentrancy() {
421 return Atomic::cmpxchg(1, &jfr_shutdown_lock, 0) == 0;
422 }
423
424 class JavaThreadInVM : public StackObj {
425 private:
426 JavaThread* const _jt;
427 JavaThreadState _original_state;
428 public:
429
430 JavaThreadInVM(Thread* t) : _jt(t->is_Java_thread() ? (JavaThread*)t : NULL),
431 _original_state(_thread_max_state) {
432 if ((_jt != NULL) && (_jt->thread_state() != _thread_in_vm)) {
433 _original_state = _jt->thread_state();
434 _jt->set_thread_state(_thread_in_vm);
435 }
436 }
437
438 ~JavaThreadInVM() {
439 if (_original_state != _thread_max_state) {
440 _jt->set_thread_state(_original_state);
441 }
|
401 PeriodicTask_lock->unlock();
402 }
403
404 if (JfrMsg_lock->owned_by_self()) {
405 JfrMsg_lock->unlock();
406 }
407
408 if (JfrBuffer_lock->owned_by_self()) {
409 JfrBuffer_lock->unlock();
410 }
411
412 if (JfrStacktrace_lock->owned_by_self()) {
413 JfrStacktrace_lock->unlock();
414 }
415 return true;
416 }
417
418 static volatile int jfr_shutdown_lock = 0;
419
420 static bool guard_reentrancy() {
421 return Atomic::cmpxchg(&jfr_shutdown_lock, 0, 1) == 0;
422 }
423
424 class JavaThreadInVM : public StackObj {
425 private:
426 JavaThread* const _jt;
427 JavaThreadState _original_state;
428 public:
429
430 JavaThreadInVM(Thread* t) : _jt(t->is_Java_thread() ? (JavaThread*)t : NULL),
431 _original_state(_thread_max_state) {
432 if ((_jt != NULL) && (_jt->thread_state() != _thread_in_vm)) {
433 _original_state = _jt->thread_state();
434 _jt->set_thread_state(_thread_in_vm);
435 }
436 }
437
438 ~JavaThreadInVM() {
439 if (_original_state != _thread_max_state) {
440 _jt->set_thread_state(_original_state);
441 }
|