src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp
changeset 50703 0486d7749b8d
parent 50429 83aec1d357d4
child 52212 e6973df15152
--- a/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp	Thu Jun 21 12:03:54 2018 -0700
+++ b/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp	Thu Jun 21 20:52:52 2018 +0200
@@ -66,7 +66,6 @@
   _free_list_mspace(NULL),
   _epoch_transition_mspace(NULL),
   _lock(NULL),
-  _type_manager(NULL),
   _service_thread(NULL),
   _chunkwriter(cw),
   _checkpoint_epoch_state(JfrTraceIdEpoch::epoch()) {}
@@ -81,9 +80,7 @@
   if (_lock != NULL) {
     delete _lock;
   }
-  if (_type_manager) {
-    delete _type_manager;
-  }
+  JfrTypeManager::clear();
 }
 
 static const size_t unlimited_mspace_size = 0;
@@ -109,14 +106,12 @@
   if (_epoch_transition_mspace == NULL) {
     return false;
   }
-  assert(_type_manager == NULL, "invariant");
-  _type_manager = new JfrTypeManager();
-  if (_type_manager == NULL || !_type_manager->initialize()) {
+  assert(_lock == NULL, "invariant");
+  _lock = new Mutex(Monitor::leaf - 1, "Checkpoint mutex", Mutex::_allow_vm_block_flag, Monitor::_safepoint_check_never);
+  if (_lock == NULL) {
     return false;
   }
-  assert(_lock == NULL, "invariant");
-  _lock = new Mutex(Monitor::leaf - 1, "Checkpoint mutex", Mutex::_allow_vm_block_flag, Monitor::_safepoint_check_never);
-  return _lock != NULL;
+  return JfrTypeManager::initialize();
 }
 
 bool JfrCheckpointManager::use_epoch_transition_mspace(const Thread* thread) const {
@@ -354,37 +349,32 @@
   return discarder.processed();
 }
 
-bool JfrCheckpointManager::register_serializer(JfrTypeId id, bool require_safepoint, bool permit_cache, JfrSerializer* cs) {
-  assert(cs != NULL, "invariant");
-  return instance()._type_manager->register_serializer(id, require_safepoint, permit_cache, cs);
-}
-
 size_t JfrCheckpointManager::write_types() {
   JfrCheckpointWriter writer(false, true, Thread::current());
-  _type_manager->write_types(writer);
+  JfrTypeManager::write_types(writer);
   return writer.used_size();
 }
 
 size_t JfrCheckpointManager::write_safepoint_types() {
   // this is also a "flushpoint"
   JfrCheckpointWriter writer(true, true, Thread::current());
-  _type_manager->write_safepoint_types(writer);
+  JfrTypeManager::write_safepoint_types(writer);
   return writer.used_size();
 }
 
 void JfrCheckpointManager::write_type_set() {
-  _type_manager->write_type_set();
+  JfrTypeManager::write_type_set();
 }
 
 void JfrCheckpointManager::write_type_set_for_unloaded_classes() {
   assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint!");
-  instance()._type_manager->write_type_set_for_unloaded_classes();
+  JfrTypeManager::write_type_set_for_unloaded_classes();
 }
 
 void JfrCheckpointManager::create_thread_checkpoint(JavaThread* jt) {
-  instance()._type_manager->create_thread_checkpoint(jt);
+  JfrTypeManager::create_thread_checkpoint(jt);
 }
 
 void JfrCheckpointManager::write_thread_checkpoint(JavaThread* jt) {
-  instance()._type_manager->write_thread_checkpoint(jt);
+  JfrTypeManager::write_thread_checkpoint(jt);
 }