src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.cpp
branchJEP-349-branch
changeset 57993 dc5746ce3b92
parent 57990 b08487c6eb4d
child 57997 8dea18a54031
equal deleted inserted replaced
57992:f2f7cb0f1a0f 57993:dc5746ce3b92
   268 
   268 
   269 static void allocate_traceid_working_set() {
   269 static void allocate_traceid_working_set() {
   270   id_set = new GrowableArray<traceid>(JfrOptionSet::old_object_queue_size());
   270   id_set = new GrowableArray<traceid>(JfrOptionSet::old_object_queue_size());
   271 }
   271 }
   272 
   272 
   273 static void resolve_stack_traces(ObjectSampler* sampler, JfrStackTraceRepository& stack_trace_repo) {
   273 static void resolve_stack_traces(const ObjectSampler* sampler, JfrStackTraceRepository& stack_trace_repo) {
   274   assert(sampler != NULL, "invariant");
   274   assert(sampler != NULL, "invariant");
   275   const ObjectSample* const last = sampler->last();
   275   const ObjectSample* const last = sampler->last();
   276   if (last != sampler->last_resolved()) {
   276   if (last != sampler->last_resolved()) {
   277     allocate_traceid_working_set();
   277     allocate_traceid_working_set();
   278     StackTraceBlobInstaller installer(stack_trace_repo);
   278     StackTraceBlobInstaller installer(stack_trace_repo);
   279     iterate_samples(installer);
   279     iterate_samples(installer);
   280   }
   280   }
   281 }
   281 }
   282 
   282 
   283 // caller needs ResourceMark
   283 // caller needs ResourceMark
   284 void ObjectSampleCheckpoint::on_rotation(ObjectSampler* sampler, JfrStackTraceRepository& stack_trace_repo) {
   284 void ObjectSampleCheckpoint::on_rotation(const ObjectSampler* sampler, JfrStackTraceRepository& stack_trace_repo) {
   285   assert(sampler != NULL, "invariant");
   285   assert(sampler != NULL, "invariant");
   286   assert(LeakProfiler::is_running(), "invariant");
   286   assert(LeakProfiler::is_running(), "invariant");
   287   resolve_stack_traces(sampler, stack_trace_repo);
   287   resolve_stack_traces(sampler, stack_trace_repo);
   288 }
   288 }
   289 
   289 
   385   // reset blob write states
   385   // reset blob write states
   386   cbw.set_reset();
   386   cbw.set_reset();
   387   iterate_samples(cbw, true);
   387   iterate_samples(cbw, true);
   388 }
   388 }
   389 
   389 
   390 void ObjectSampleCheckpoint::write(ObjectSampler* sampler, EdgeStore* edge_store, bool emit_all, Thread* thread) {
   390 void ObjectSampleCheckpoint::write(const ObjectSampler* sampler, EdgeStore* edge_store, bool emit_all, Thread* thread) {
   391   assert(sampler != NULL, "invariant");
   391   assert(sampler != NULL, "invariant");
   392   assert(edge_store != NULL, "invariant");
   392   assert(edge_store != NULL, "invariant");
   393   assert(thread != NULL, "invariant");
   393   assert(thread != NULL, "invariant");
   394   write_sample_blobs(sampler, emit_all, thread);
   394   write_sample_blobs(sampler, emit_all, thread);
   395   // write reference chains
   395   // write reference chains