src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp
branchJEP-349-branch
changeset 58157 9dca61a7df19
parent 58154 060d9d139109
parent 58132 caa25ab47aca
child 58158 369ebc2a11c2
equal deleted inserted replaced
58156:68031e660872 58157:9dca61a7df19
   274   bool _flushpoint;
   274   bool _flushpoint;
   275  public:
   275  public:
   276   TypeSetSerialization(bool class_unload, bool flushpoint, JfrCheckpointWriter* leakp_writer = NULL) :
   276   TypeSetSerialization(bool class_unload, bool flushpoint, JfrCheckpointWriter* leakp_writer = NULL) :
   277     _leakp_writer(leakp_writer), _elements(0), _class_unload(class_unload), _flushpoint(flushpoint) {}
   277     _leakp_writer(leakp_writer), _elements(0), _class_unload(class_unload), _flushpoint(flushpoint) {}
   278   void write(JfrCheckpointWriter& writer) {
   278   void write(JfrCheckpointWriter& writer) {
   279     MutexLocker cld_lock(SafepointSynchronize::is_at_safepoint() ? NULL : ClassLoaderDataGraph_lock);
       
   280     MutexLocker lock(SafepointSynchronize::is_at_safepoint() ? NULL : Module_lock);
       
   281    _elements = JfrTypeSet::serialize(&writer, _leakp_writer, _class_unload, _flushpoint);
   279    _elements = JfrTypeSet::serialize(&writer, _leakp_writer, _class_unload, _flushpoint);
   282   }
   280   }
   283   size_t elements() const {
   281   size_t elements() const {
   284     return _elements;
   282     return _elements;
   285   }
   283   }
   288 void ClassUnloadTypeSet::serialize(JfrCheckpointWriter& writer) {
   286 void ClassUnloadTypeSet::serialize(JfrCheckpointWriter& writer) {
   289   TypeSetSerialization type_set(true, false);
   287   TypeSetSerialization type_set(true, false);
   290   type_set.write(writer);
   288   type_set.write(writer);
   291 };
   289 };
   292 
   290 
       
   291 TypeSet::TypeSet(JfrCheckpointWriter* leakp_writer) : _leakp_writer(leakp_writer) {}
       
   292 
   293 void FlushTypeSet::serialize(JfrCheckpointWriter& writer) {
   293 void FlushTypeSet::serialize(JfrCheckpointWriter& writer) {
   294   assert(!SafepointSynchronize::is_at_safepoint(), "invariant");
   294   assert(!SafepointSynchronize::is_at_safepoint(), "invariant");
   295   TypeSetSerialization type_set(false, true);
   295   TypeSetSerialization type_set(false);
   296   type_set.write(writer);
   296     type_set.write(writer, &leakp_writer);
   297   _elements = type_set.elements();
   297   _elements = type_set.elements();
   298 }
   298 }
   299 
   299 
   300 size_t FlushTypeSet::elements() const {
   300 size_t FlushTypeSet::elements() const {
   301   return _elements;
   301     return;
   302 }
       
   303 
   302 
   304 TypeSet::TypeSet(JfrCheckpointWriter* leakp_writer) : _leakp_writer(leakp_writer) {}
   303 TypeSet::TypeSet(JfrCheckpointWriter* leakp_writer) : _leakp_writer(leakp_writer) {}
   305 
   304 
   306 void TypeSet::serialize(JfrCheckpointWriter& writer) {
   305 void TypeSet::serialize(JfrCheckpointWriter& writer) {
   307   TypeSetSerialization type_set(false, false, _leakp_writer);
   306   TypeSetSerialization type_set(false, false, _leakp_writer);