src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp
branchJEP-349-branch
changeset 58823 6a21dba79b81
parent 58251 c4067538a0f2
parent 58786 7909763ad193
child 58853 4c036608ca8b
equal deleted inserted replaced
58806:a7d850b47b19 58823:6a21dba79b81
    29 #include "gc/shared/gcCause.hpp"
    29 #include "gc/shared/gcCause.hpp"
    30 #include "gc/shared/gcName.hpp"
    30 #include "gc/shared/gcName.hpp"
    31 #include "gc/shared/gcTrace.hpp"
    31 #include "gc/shared/gcTrace.hpp"
    32 #include "gc/shared/gcWhen.hpp"
    32 #include "gc/shared/gcWhen.hpp"
    33 #include "jfr/leakprofiler/leakProfiler.hpp"
    33 #include "jfr/leakprofiler/leakProfiler.hpp"
    34 #include "jfr/recorder/checkpoint/jfrCheckpointManager.hpp"
    34 #include "jfr/recorder/checkpoint/jfrCheckpointWriter.hpp"
    35 #include "jfr/recorder/checkpoint/types/jfrType.hpp"
    35 #include "jfr/recorder/checkpoint/types/jfrType.hpp"
    36 #include "jfr/recorder/jfrRecorder.hpp"
    36 #include "jfr/recorder/jfrRecorder.hpp"
    37 #include "jfr/recorder/checkpoint/types/jfrThreadGroup.hpp"
    37 #include "jfr/recorder/checkpoint/types/jfrThreadGroup.hpp"
    38 #include "jfr/recorder/checkpoint/types/jfrThreadState.hpp"
    38 #include "jfr/recorder/checkpoint/types/jfrThreadState.hpp"
    39 #include "jfr/recorder/checkpoint/types/jfrTypeSet.hpp"
    39 #include "jfr/support/jfrThreadLocal.hpp"
       
    40 #include "jfr/writers/jfrJavaEventWriter.hpp"
    40 #include "jfr/utilities/jfrThreadIterator.hpp"
    41 #include "jfr/utilities/jfrThreadIterator.hpp"
    41 #include "memory/metaspaceGCThresholdUpdater.hpp"
    42 #include "memory/metaspaceGCThresholdUpdater.hpp"
    42 #include "memory/referenceType.hpp"
    43 #include "memory/referenceType.hpp"
    43 #include "memory/universe.hpp"
    44 #include "memory/universe.hpp"
    44 #include "oops/compressedOops.hpp"
    45 #include "oops/compressedOops.hpp"
   263   for (u4 i = 0; i < nof_entries; ++i) {
   264   for (u4 i = 0; i < nof_entries; ++i) {
   264     writer.write_key(i);
   265     writer.write_key(i);
   265     writer.write(VM_Operation::name(VM_Operation::VMOp_Type(i)));
   266     writer.write(VM_Operation::name(VM_Operation::VMOp_Type(i)));
   266   }
   267   }
   267 }
   268 }
   268 
       
   269 class TypeSetSerialization {
       
   270  private:
       
   271   JfrCheckpointWriter* _leakp_writer;
       
   272   size_t _elements;
       
   273  public:
       
   274   TypeSetSerialization(JfrCheckpointWriter* leakp_writer = NULL) :
       
   275     _leakp_writer(leakp_writer), _elements(0) {}
       
   276   void write(JfrCheckpointWriter& writer, bool class_unload, bool flushpoint) {
       
   277     assert_locked_or_safepoint(ClassLoaderDataGraph_lock);
       
   278     assert_locked_or_safepoint(Module_lock);
       
   279    _elements = JfrTypeSet::serialize(&writer, _leakp_writer, class_unload, flushpoint);
       
   280   }
       
   281   size_t elements() const {
       
   282     return _elements;
       
   283   }
       
   284 };
       
   285 
       
   286 void ClassUnloadTypeSet::serialize(JfrCheckpointWriter& writer) {
       
   287   TypeSetSerialization type_set;
       
   288   type_set.write(writer, true, false);
       
   289 };
       
   290 
       
   291 void FlushTypeSet::serialize(JfrCheckpointWriter& writer) {
       
   292   assert(!SafepointSynchronize::is_at_safepoint(), "invariant");
       
   293   MutexLocker cld_lock(ClassLoaderDataGraph_lock);
       
   294   MutexLocker module_lock(Module_lock);
       
   295   TypeSetSerialization type_set;
       
   296   type_set.write(writer, false, true);
       
   297   _elements = type_set.elements();
       
   298 }
       
   299 
       
   300 size_t FlushTypeSet::elements() const {
       
   301   return _elements;
       
   302 }
       
   303 
       
   304 TypeSet::TypeSet(JfrCheckpointWriter* leakp_writer) : _leakp_writer(leakp_writer) {}
       
   305 
       
   306 void TypeSet::clear() {
       
   307   JfrTypeSet::clear();
       
   308 }
       
   309 
       
   310 void TypeSet::serialize(JfrCheckpointWriter& writer) {
       
   311   assert(!SafepointSynchronize::is_at_safepoint(), "invariant");
       
   312   MutexLocker cld_lock(ClassLoaderDataGraph_lock);
       
   313   MutexLocker module_lock(Module_lock);
       
   314   TypeSetSerialization type_set(_leakp_writer);
       
   315   type_set.write(writer, false, false);
       
   316 };
       
   317 
   269 
   318 void ThreadStateConstant::serialize(JfrCheckpointWriter& writer) {
   270 void ThreadStateConstant::serialize(JfrCheckpointWriter& writer) {
   319   JfrThreadState::serialize(writer);
   271   JfrThreadState::serialize(writer);
   320 }
   272 }
   321 
   273