< prev index next >

src/share/vm/jfr/support/jfrThreadLocal.hpp

Print this page
rev 9380 : 8237499: JFR: Include stack trace in the ThreadStart event
Reviewed-by: egahlin


  34 class Thread;
  35 
  36 class JfrThreadLocal {
  37  private:
  38   jobject _java_event_writer;
  39   mutable JfrBuffer* _java_buffer;
  40   mutable JfrBuffer* _native_buffer;
  41   JfrBuffer* _shelved_buffer;
  42   mutable JfrStackFrame* _stackframes;
  43   mutable traceid _trace_id;
  44   JfrCheckpointBlobHandle _thread_cp;
  45   u8 _data_lost;
  46   traceid _stack_trace_id;
  47   jlong _user_time;
  48   jlong _cpu_time;
  49   jlong _wallclock_time;
  50   unsigned int _stack_trace_hash;
  51   mutable u4 _stackdepth;
  52   volatile jint _entering_suspend_flag;
  53   bool _dead;

  54 
  55   JfrBuffer* install_native_buffer() const;
  56   JfrBuffer* install_java_buffer() const;
  57   JfrStackFrame* install_stackframes() const;
  58 
  59   static void release(JfrThreadLocal* tl, Thread* t);
  60 
  61  public:
  62   JfrThreadLocal();
  63 
  64   JfrBuffer* native_buffer() const {
  65     return _native_buffer != NULL ? _native_buffer : install_native_buffer();
  66   }
  67 
  68   bool has_native_buffer() const {
  69     return _native_buffer != NULL;
  70   }
  71 
  72   void set_native_buffer(JfrBuffer* buffer) {
  73     _native_buffer = buffer;


 108   JfrStackFrame* stackframes() const {
 109     return _stackframes != NULL ? _stackframes : install_stackframes();
 110   }
 111 
 112   void set_stackframes(JfrStackFrame* frames) {
 113     _stackframes = frames;
 114   }
 115 
 116   u4 stackdepth() const;
 117 
 118   void set_stackdepth(u4 depth) {
 119     _stackdepth = depth;
 120   }
 121 
 122   traceid thread_id() const {
 123     return _trace_id;
 124   }
 125 
 126   void set_thread_id(traceid thread_id) {
 127     _trace_id = thread_id;




 128   }
 129 
 130   void set_cached_stack_trace_id(traceid id, unsigned int hash = 0) {
 131     _stack_trace_id = id;
 132     _stack_trace_hash = hash;
 133   }
 134 
 135   bool has_cached_stack_trace() const {
 136     return _stack_trace_id != max_julong;
 137   }
 138 
 139   void clear_cached_stack_trace() {
 140     _stack_trace_id = max_julong;
 141     _stack_trace_hash = 0;
 142   }
 143 
 144   traceid cached_stack_trace_id() const {
 145     return _stack_trace_id;
 146   }
 147 




  34 class Thread;
  35 
  36 class JfrThreadLocal {
  37  private:
  38   jobject _java_event_writer;
  39   mutable JfrBuffer* _java_buffer;
  40   mutable JfrBuffer* _native_buffer;
  41   JfrBuffer* _shelved_buffer;
  42   mutable JfrStackFrame* _stackframes;
  43   mutable traceid _trace_id;
  44   JfrCheckpointBlobHandle _thread_cp;
  45   u8 _data_lost;
  46   traceid _stack_trace_id;
  47   jlong _user_time;
  48   jlong _cpu_time;
  49   jlong _wallclock_time;
  50   unsigned int _stack_trace_hash;
  51   mutable u4 _stackdepth;
  52   volatile jint _entering_suspend_flag;
  53   bool _dead;
  54   traceid _parent_trace_id;
  55 
  56   JfrBuffer* install_native_buffer() const;
  57   JfrBuffer* install_java_buffer() const;
  58   JfrStackFrame* install_stackframes() const;
  59 
  60   static void release(JfrThreadLocal* tl, Thread* t);
  61 
  62  public:
  63   JfrThreadLocal();
  64 
  65   JfrBuffer* native_buffer() const {
  66     return _native_buffer != NULL ? _native_buffer : install_native_buffer();
  67   }
  68 
  69   bool has_native_buffer() const {
  70     return _native_buffer != NULL;
  71   }
  72 
  73   void set_native_buffer(JfrBuffer* buffer) {
  74     _native_buffer = buffer;


 109   JfrStackFrame* stackframes() const {
 110     return _stackframes != NULL ? _stackframes : install_stackframes();
 111   }
 112 
 113   void set_stackframes(JfrStackFrame* frames) {
 114     _stackframes = frames;
 115   }
 116 
 117   u4 stackdepth() const;
 118 
 119   void set_stackdepth(u4 depth) {
 120     _stackdepth = depth;
 121   }
 122 
 123   traceid thread_id() const {
 124     return _trace_id;
 125   }
 126 
 127   void set_thread_id(traceid thread_id) {
 128     _trace_id = thread_id;
 129   }
 130 
 131   traceid parent_thread_id() const {
 132     return _parent_trace_id;
 133   }
 134 
 135   void set_cached_stack_trace_id(traceid id, unsigned int hash = 0) {
 136     _stack_trace_id = id;
 137     _stack_trace_hash = hash;
 138   }
 139 
 140   bool has_cached_stack_trace() const {
 141     return _stack_trace_id != max_julong;
 142   }
 143 
 144   void clear_cached_stack_trace() {
 145     _stack_trace_id = max_julong;
 146     _stack_trace_hash = 0;
 147   }
 148 
 149   traceid cached_stack_trace_id() const {
 150     return _stack_trace_id;
 151   }
 152 


< prev index next >