src/hotspot/share/jfr/leakprofiler/sampling/objectSampler.cpp
branchJEP-349-branch
changeset 57983 a57907813a83
parent 57934 9c150f2b1fea
child 58154 060d9d139109
equal deleted inserted replaced
57971:aa7b1ea52413 57983:a57907813a83
   111   const JfrThreadLocal* const tl = thread->jfr_thread_local();
   111   const JfrThreadLocal* const tl = thread->jfr_thread_local();
   112   assert(tl != NULL, "invariant");
   112   assert(tl != NULL, "invariant");
   113   if (tl->is_excluded()) {
   113   if (tl->is_excluded()) {
   114     return 0;
   114     return 0;
   115   }
   115   }
   116   if (!tl->has_thread_checkpoint()) {
   116   if (!tl->has_thread_blob()) {
   117     JfrCheckpointManager::create_thread_checkpoint(thread);
   117     JfrCheckpointManager::create_thread_blob(thread);
   118   }
   118   }
   119   assert(tl->has_thread_checkpoint(), "invariant");
   119   assert(tl->has_thread_blob(), "invariant");
   120   return tl->thread_id();
   120   return tl->thread_id();
   121 }
   121 }
   122 
   122 
   123 static void record_stacktrace(JavaThread* thread) {
   123 static void record_stacktrace(JavaThread* thread) {
   124   assert(thread != NULL, "invariant");
   124   assert(thread != NULL, "invariant");
   146 
   146 
   147 void ObjectSampler::add(HeapWord* obj, size_t allocated, traceid thread_id, JavaThread* thread) {
   147 void ObjectSampler::add(HeapWord* obj, size_t allocated, traceid thread_id, JavaThread* thread) {
   148   assert(obj != NULL, "invariant");
   148   assert(obj != NULL, "invariant");
   149   assert(thread_id != 0, "invariant");
   149   assert(thread_id != 0, "invariant");
   150   assert(thread != NULL, "invariant");
   150   assert(thread != NULL, "invariant");
   151   assert(thread->jfr_thread_local()->has_thread_checkpoint(), "invariant");
   151   assert(thread->jfr_thread_local()->has_thread_blob(), "invariant");
   152 
   152 
   153   if (_dead_samples) {
   153   if (_dead_samples) {
   154     scavenge();
   154     scavenge();
   155     assert(!_dead_samples, "invariant");
   155     assert(!_dead_samples, "invariant");
   156   }
   156   }
   172 
   172 
   173   assert(sample != NULL, "invariant");
   173   assert(sample != NULL, "invariant");
   174   sample->set_thread_id(thread_id);
   174   sample->set_thread_id(thread_id);
   175 
   175 
   176   const JfrThreadLocal* const tl = thread->jfr_thread_local();
   176   const JfrThreadLocal* const tl = thread->jfr_thread_local();
   177   sample->set_thread_checkpoint(tl->thread_checkpoint());
   177   sample->set_thread(tl->thread_blob());
   178 
   178 
   179   const unsigned int stacktrace_hash = tl->cached_stack_trace_hash();
   179   const unsigned int stacktrace_hash = tl->cached_stack_trace_hash();
   180   if (stacktrace_hash != 0) {
   180   if (stacktrace_hash != 0) {
   181     sample->set_stack_trace_id(tl->cached_stack_trace_id());
   181     sample->set_stack_trace_id(tl->cached_stack_trace_id());
   182     sample->set_stack_trace_hash(stacktrace_hash);
   182     sample->set_stack_trace_hash(stacktrace_hash);