< prev index next >

src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp

Print this page




 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     }


< prev index next >