diff -r a7d850b47b19 -r 6a21dba79b81 src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp --- a/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp Sat Oct 26 23:59:51 2019 +0200 +++ b/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp Mon Oct 28 18:43:04 2019 +0100 @@ -31,12 +31,13 @@ #include "gc/shared/gcTrace.hpp" #include "gc/shared/gcWhen.hpp" #include "jfr/leakprofiler/leakProfiler.hpp" -#include "jfr/recorder/checkpoint/jfrCheckpointManager.hpp" +#include "jfr/recorder/checkpoint/jfrCheckpointWriter.hpp" #include "jfr/recorder/checkpoint/types/jfrType.hpp" #include "jfr/recorder/jfrRecorder.hpp" #include "jfr/recorder/checkpoint/types/jfrThreadGroup.hpp" #include "jfr/recorder/checkpoint/types/jfrThreadState.hpp" -#include "jfr/recorder/checkpoint/types/jfrTypeSet.hpp" +#include "jfr/support/jfrThreadLocal.hpp" +#include "jfr/writers/jfrJavaEventWriter.hpp" #include "jfr/utilities/jfrThreadIterator.hpp" #include "memory/metaspaceGCThresholdUpdater.hpp" #include "memory/referenceType.hpp" @@ -266,55 +267,6 @@ } } -class TypeSetSerialization { - private: - JfrCheckpointWriter* _leakp_writer; - size_t _elements; - public: - TypeSetSerialization(JfrCheckpointWriter* leakp_writer = NULL) : - _leakp_writer(leakp_writer), _elements(0) {} - void write(JfrCheckpointWriter& writer, bool class_unload, bool flushpoint) { - assert_locked_or_safepoint(ClassLoaderDataGraph_lock); - assert_locked_or_safepoint(Module_lock); - _elements = JfrTypeSet::serialize(&writer, _leakp_writer, class_unload, flushpoint); - } - size_t elements() const { - return _elements; - } -}; - -void ClassUnloadTypeSet::serialize(JfrCheckpointWriter& writer) { - TypeSetSerialization type_set; - type_set.write(writer, true, false); -}; - -void FlushTypeSet::serialize(JfrCheckpointWriter& writer) { - assert(!SafepointSynchronize::is_at_safepoint(), "invariant"); - MutexLocker cld_lock(ClassLoaderDataGraph_lock); - MutexLocker module_lock(Module_lock); - TypeSetSerialization type_set; - type_set.write(writer, false, true); - _elements = type_set.elements(); -} - -size_t FlushTypeSet::elements() const { - return _elements; -} - -TypeSet::TypeSet(JfrCheckpointWriter* leakp_writer) : _leakp_writer(leakp_writer) {} - -void TypeSet::clear() { - JfrTypeSet::clear(); -} - -void TypeSet::serialize(JfrCheckpointWriter& writer) { - assert(!SafepointSynchronize::is_at_safepoint(), "invariant"); - MutexLocker cld_lock(ClassLoaderDataGraph_lock); - MutexLocker module_lock(Module_lock); - TypeSetSerialization type_set(_leakp_writer); - type_set.write(writer, false, false); -}; - void ThreadStateConstant::serialize(JfrCheckpointWriter& writer) { JfrThreadState::serialize(writer); }