src/hotspot/share/jfr/recorder/stacktrace/jfrStackTraceRepository.hpp
changeset 58863 c16ac7a2eba4
parent 58132 caa25ab47aca
equal deleted inserted replaced
58861:2c3cc4b01880 58863:c16ac7a2eba4
    38   friend class JfrRecorderService;
    38   friend class JfrRecorderService;
    39   friend class JfrThreadSampleClosure;
    39   friend class JfrThreadSampleClosure;
    40   friend class ObjectSampleCheckpoint;
    40   friend class ObjectSampleCheckpoint;
    41   friend class ObjectSampler;
    41   friend class ObjectSampler;
    42   friend class StackTraceBlobInstaller;
    42   friend class StackTraceBlobInstaller;
    43   friend class WriteStackTraceRepository;
    43   friend class StackTraceRepository;
    44 
    44 
    45  private:
    45  private:
    46   static const u4 TABLE_SIZE = 2053;
    46   static const u4 TABLE_SIZE = 2053;
    47   JfrStackTrace* _table[TABLE_SIZE];
    47   JfrStackTrace* _table[TABLE_SIZE];
    48   traceid _next_id;
    48   traceid _next_id;
    49   u4 _entries;
    49   u4 _entries;
    50 
    50 
    51   JfrStackTraceRepository();
    51   JfrStackTraceRepository();
    52   static JfrStackTraceRepository& instance();
    52   static JfrStackTraceRepository& instance();
    53   static JfrStackTraceRepository* create();
    53   static JfrStackTraceRepository* create();
       
    54   static void destroy();
    54   bool initialize();
    55   bool initialize();
    55   static void destroy();
       
    56 
    56 
    57   size_t write_impl(JfrChunkWriter& cw, bool clear);
    57   bool is_modified() const;
    58   static void write_metadata(JfrCheckpointWriter& cpw);
       
    59   traceid write(JfrCheckpointWriter& cpw, traceid id, unsigned int hash);
       
    60   size_t write(JfrChunkWriter& cw, bool clear);
    58   size_t write(JfrChunkWriter& cw, bool clear);
    61   size_t clear();
    59   size_t clear();
       
    60 
       
    61   const JfrStackTrace* lookup(unsigned int hash, traceid id) const;
    62 
    62 
    63   traceid add_trace(const JfrStackTrace& stacktrace);
    63   traceid add_trace(const JfrStackTrace& stacktrace);
    64   static traceid add(const JfrStackTrace& stacktrace);
    64   static traceid add(const JfrStackTrace& stacktrace);
    65   traceid record_for(JavaThread* thread, int skip, JfrStackFrame* frames, u4 max_frames);
    65   traceid record_for(JavaThread* thread, int skip, JfrStackFrame* frames, u4 max_frames);
    66   const JfrStackTrace* lookup(unsigned int hash, traceid id) const;
       
    67 
    66 
    68  public:
    67  public:
    69   static traceid record(Thread* thread, int skip = 0);
    68   static traceid record(Thread* thread, int skip = 0);
    70   static void record_and_cache(JavaThread* thread, int skip = 0);
    69   static void record_and_cache(JavaThread* thread, int skip = 0);
    71 };
    70 };