src/hotspot/share/jfr/recorder/stacktrace/jfrStackTrace.hpp
branchJEP-349-branch
changeset 57983 a57907813a83
parent 57935 123705b84980
child 58157 9dca61a7df19
equal deleted inserted replaced
57971:aa7b1ea52413 57983:a57907813a83
    27 
    27 
    28 #include "jfr/utilities/jfrAllocation.hpp"
    28 #include "jfr/utilities/jfrAllocation.hpp"
    29 #include "jfr/utilities/jfrTypes.hpp"
    29 #include "jfr/utilities/jfrTypes.hpp"
    30 
    30 
    31 class frame;
    31 class frame;
    32 class InstanceKlass;
       
    33 class JavaThread;
    32 class JavaThread;
    34 class JfrCheckpointWriter;
    33 class JfrCheckpointWriter;
    35 class JfrChunkWriter;
    34 class JfrChunkWriter;
    36 class Method;
    35 class Method;
    37 
    36 
    38 class JfrStackFrame {
    37 class JfrStackFrame {
    39   friend class ObjectSampleCheckpoint;
    38   friend class ObjectSampleCheckpoint;
    40  private:
    39  private:
    41   mutable InstanceKlass* _klass;
    40   const Method* _method;
    42   traceid _methodid;
    41   traceid _methodid;
    43   mutable int _line;
    42   mutable int _line;
    44   int _bci;
    43   int _bci;
    45   u1 _type;
    44   u1 _type;
    46 
    45 
    47  public:
    46  public:
    48   JfrStackFrame(const traceid& id, int bci, int type, InstanceKlass* klass);
    47   JfrStackFrame(const traceid& id, int bci, int type, const Method* method);
    49   JfrStackFrame(const traceid& id, int bci, int type, int lineno);
    48   JfrStackFrame(const traceid& id, int bci, int type, int lineno);
    50 
    49 
    51   bool equals(const JfrStackFrame& rhs) const;
    50   bool equals(const JfrStackFrame& rhs) const;
    52   void write(JfrChunkWriter& cw) const;
    51   void write(JfrChunkWriter& cw) const;
    53   void write(JfrCheckpointWriter& cpw) const;
    52   void write(JfrCheckpointWriter& cpw) const;
    67   friend class JfrStackTraceRepository;
    66   friend class JfrStackTraceRepository;
    68   friend class ObjectSampleCheckpoint;
    67   friend class ObjectSampleCheckpoint;
    69   friend class ObjectSampler;
    68   friend class ObjectSampler;
    70   friend class OSThreadSampler;
    69   friend class OSThreadSampler;
    71   friend class StackTraceResolver;
    70   friend class StackTraceResolver;
    72 
       
    73  private:
    71  private:
    74   const JfrStackTrace* _next;
    72   const JfrStackTrace* _next;
    75   JfrStackFrame* _frames;
    73   JfrStackFrame* _frames;
    76   traceid _id;
    74   traceid _id;
    77   unsigned int _hash;
    75   unsigned int _hash;
   100 
    98 
   101   bool have_lineno() const { return _lineno; }
    99   bool have_lineno() const { return _lineno; }
   102   bool full_stacktrace() const { return _reached_root; }
   100   bool full_stacktrace() const { return _reached_root; }
   103 
   101 
   104   JfrStackTrace(traceid id, const JfrStackTrace& trace, const JfrStackTrace* next);
   102   JfrStackTrace(traceid id, const JfrStackTrace& trace, const JfrStackTrace* next);
   105   void operator=(const JfrStackTrace& trace);
   103   JfrStackTrace(JfrStackFrame* frames, u4 max_frames);
       
   104   ~JfrStackTrace();
   106 
   105 
   107  public:
   106  public:
   108   JfrStackTrace(JfrStackFrame* frames, u4 max_frames);
       
   109   ~JfrStackTrace();
       
   110   unsigned int hash() const { return _hash; }
   107   unsigned int hash() const { return _hash; }
   111   traceid id() const { return _id; }
   108   traceid id() const { return _id; }
   112   u4 number_of_frames() const { return _nr_of_frames; }
       
   113 };
   109 };
   114 
   110 
   115 #endif // SHARE_JFR_RECORDER_STACKTRACE_JFRSTACKTRACE_HPP
   111 #endif // SHARE_JFR_RECORDER_STACKTRACE_JFRSTACKTRACE_HPP