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 }; |