diff -r 2c3cc4b01880 -r c16ac7a2eba4 src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp --- a/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp Wed Oct 30 16:14:56 2019 +0100 +++ b/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp Wed Oct 30 19:43:52 2019 +0100 @@ -68,18 +68,29 @@ void unlock(); DEBUG_ONLY(bool is_locked() const;) + JfrCheckpointMspace* lookup(Buffer* old) const; + bool use_epoch_transition_mspace(const Thread* t) const; + size_t write_epoch_transition_mspace(); + static Buffer* lease_buffer(Thread* t, size_t size = 0); + static Buffer* lease_buffer(Buffer* old, Thread* t, size_t size = 0); static Buffer* flush(Buffer* old, size_t used, size_t requested, Thread* t); size_t clear(); size_t write(); - size_t write_epoch_transition_mspace(); - size_t write_types(); - size_t write_safepoint_types(); + size_t flush(); + + bool is_static_type_set_required(); + size_t write_static_type_set(); + size_t write_threads(); + size_t write_static_type_set_and_threads(); + bool is_type_set_required(); void write_type_set(); + static void write_type_set_for_unloaded_classes(); + void shift_epoch(); void synchronize_epoch(); - bool use_epoch_transition_mspace(const Thread* t) const; + void notify_threads(); JfrCheckpointManager(JfrChunkWriter& cw); ~JfrCheckpointManager(); @@ -87,14 +98,17 @@ static JfrCheckpointManager& instance(); static JfrCheckpointManager* create(JfrChunkWriter& cw); bool initialize(); + void on_rotation(); static void destroy(); public: + size_t flush_type_set(); + void flush_static_type_set(); + static void create_thread_blob(Thread* t); + static void write_thread_checkpoint(Thread* t); void register_service_thread(const Thread* t); - static void write_type_set_for_unloaded_classes(); - static void create_thread_blob(JavaThread* jt); - static void write_thread_checkpoint(JavaThread* jt); + friend class Jfr; friend class JfrRecorder; friend class JfrRecorderService; friend class JfrCheckpointFlush;