# HG changeset patch # User mgronlun # Date 1568716673 -7200 # Node ID 2bc0dc4b7119ae6ed721da566e22b89f93b0c681 # Parent e1b896faca1c558393c7a9d3ef65aa1be83d44af folding operations back into subsystems diff -r e1b896faca1c -r 2bc0dc4b7119 src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp --- a/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp Tue Sep 17 12:06:48 2019 +0200 +++ b/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp Tue Sep 17 12:37:53 2019 +0200 @@ -419,12 +419,16 @@ } } -void JfrCheckpointManager::notify_types_on_rotation() { - JfrTypeManager::notify_types_on_rotation(); +void JfrCheckpointManager::on_rotation() { + assert(SafepointSynchronize::is_at_safepoint(), "invariant"); + JfrTypeManager::on_rotation(); + notify_threads(); + shift_epoch(); } void JfrCheckpointManager::write_type_set() { JfrTypeManager::write_type_set(); + write(); } void JfrCheckpointManager::write_type_set_for_unloaded_classes() { diff -r e1b896faca1c -r 2bc0dc4b7119 src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp --- a/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp Tue Sep 17 12:06:48 2019 +0200 +++ b/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.hpp Tue Sep 17 12:37:53 2019 +0200 @@ -87,7 +87,7 @@ void synchronize_epoch(); bool use_epoch_transition_mspace(const Thread* t) const; void notify_threads(); - void notify_types_on_rotation(); + void on_rotation(); bool is_type_set_required(); bool is_constant_set_required(); diff -r e1b896faca1c -r 2bc0dc4b7119 src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp --- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp Tue Sep 17 12:06:48 2019 +0200 +++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp Tue Sep 17 12:37:53 2019 +0200 @@ -34,7 +34,6 @@ #include "jfr/utilities/jfrIterator.hpp" #include "memory/resourceArea.hpp" #include "runtime/handles.inline.hpp" -#include "runtime/safepoint.hpp" #include "runtime/thread.inline.hpp" #include "utilities/exceptions.hpp" #include "runtime/semaphore.hpp" @@ -164,7 +163,7 @@ serialize_thread_groups(writer); } -void JfrTypeManager::notify_types_on_rotation() { +void JfrTypeManager::on_rotation() { const Iterator iter(types); while (iter.has_next()) { iter.next()->on_rotation(); diff -r e1b896faca1c -r 2bc0dc4b7119 src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.hpp --- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.hpp Tue Sep 17 12:06:48 2019 +0200 +++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.hpp Tue Sep 17 12:37:53 2019 +0200 @@ -36,7 +36,7 @@ static bool is_new_constant_registered(); static void write_types(JfrCheckpointWriter& writer); static void write_threads(JfrCheckpointWriter& writer); - static void notify_types_on_rotation(); + static void on_rotation(); static void write_type_set(); static void write_type_set_for_unloaded_classes(); static size_t flush_type_set(); diff -r e1b896faca1c -r 2bc0dc4b7119 src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp --- a/src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp Tue Sep 17 12:06:48 2019 +0200 +++ b/src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp Tue Sep 17 12:37:53 2019 +0200 @@ -598,9 +598,7 @@ write_stringpool_safepoint(_string_pool, _chunkwriter); } _storage.write_at_safepoint(); - _checkpoint_manager.notify_threads(); - _checkpoint_manager.notify_types_on_rotation(); - _checkpoint_manager.shift_epoch(); + _checkpoint_manager.on_rotation(); _chunkwriter.set_time_stamp(); } @@ -616,8 +614,6 @@ // Note: There is a dependency on write_type_set() above, ensure the release is subsequent. ObjectSampler::release(); } - // serialize any outstanding checkpoint memory - _checkpoint_manager.write(); // serialize the metadata descriptor event and close out the chunk write_metadata(_chunkwriter); _repository.close_chunk();