equal
deleted
inserted
replaced
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()) { |