src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp
changeset 52448 bc5c7f63dbae
parent 52302 912b79d983d9
child 52460 f1bb77833b59
equal deleted inserted replaced
52447:4547f8303f2d 52448:bc5c7f63dbae
   319   size_t _interval_java;
   319   size_t _interval_java;
   320   size_t _interval_native;
   320   size_t _interval_native;
   321   int _cur_index;
   321   int _cur_index;
   322   const u4 _max_frames;
   322   const u4 _max_frames;
   323   volatile bool _disenrolled;
   323   volatile bool _disenrolled;
   324   static Monitor* _transition_block_lock;
       
   325 
   324 
   326   JavaThread* next_thread(ThreadsList* t_list, JavaThread* first_sampled, JavaThread* current);
   325   JavaThread* next_thread(ThreadsList* t_list, JavaThread* first_sampled, JavaThread* current);
   327   void task_stacktrace(JfrSampleType type, JavaThread** last_thread);
   326   void task_stacktrace(JfrSampleType type, JavaThread** last_thread);
   328   JfrThreadSampler(size_t interval_java, size_t interval_native, u4 max_frames);
   327   JfrThreadSampler(size_t interval_java, size_t interval_native, u4 max_frames);
   329   ~JfrThreadSampler();
   328   ~JfrThreadSampler();
   337   size_t get_java_interval() { return _interval_java; };
   336   size_t get_java_interval() { return _interval_java; };
   338   size_t get_native_interval() { return _interval_native; };
   337   size_t get_native_interval() { return _interval_native; };
   339 
   338 
   340  public:
   339  public:
   341   void run();
   340   void run();
   342   static Monitor* transition_block() { return _transition_block_lock; }
   341   static Monitor* transition_block() { return JfrThreadSampler_lock; }
   343   static void on_javathread_suspend(JavaThread* thread);
   342   static void on_javathread_suspend(JavaThread* thread);
   344 };
   343 };
   345 
       
   346 Monitor* JfrThreadSampler::_transition_block_lock = new Monitor(Mutex::leaf, "Trace block", true, Monitor::_safepoint_check_never);
       
   347 
   344 
   348 static void clear_transition_block(JavaThread* jt) {
   345 static void clear_transition_block(JavaThread* jt) {
   349   jt->clear_trace_flag();
   346   jt->clear_trace_flag();
   350   JfrThreadLocal* const tl = jt->jfr_thread_local();
   347   JfrThreadLocal* const tl = jt->jfr_thread_local();
   351   if (tl->is_trace_block()) {
   348   if (tl->is_trace_block()) {