src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp
changeset 59319 9ee940f1de90
parent 59198 92c98aa0f801
equal deleted inserted replaced
59318:70021dbed82b 59319:9ee940f1de90
    70   _gc_par_phases[MergeRS]->link_thread_work_items(_merge_rs_merged_sparse, MergeRSMergedSparse);
    70   _gc_par_phases[MergeRS]->link_thread_work_items(_merge_rs_merged_sparse, MergeRSMergedSparse);
    71   _merge_rs_merged_fine = new WorkerDataArray<size_t>(max_gc_threads, "Merged Fine:");
    71   _merge_rs_merged_fine = new WorkerDataArray<size_t>(max_gc_threads, "Merged Fine:");
    72   _gc_par_phases[MergeRS]->link_thread_work_items(_merge_rs_merged_fine, MergeRSMergedFine);
    72   _gc_par_phases[MergeRS]->link_thread_work_items(_merge_rs_merged_fine, MergeRSMergedFine);
    73   _merge_rs_merged_coarse = new WorkerDataArray<size_t>(max_gc_threads, "Merged Coarse:");
    73   _merge_rs_merged_coarse = new WorkerDataArray<size_t>(max_gc_threads, "Merged Coarse:");
    74   _gc_par_phases[MergeRS]->link_thread_work_items(_merge_rs_merged_coarse, MergeRSMergedCoarse);
    74   _gc_par_phases[MergeRS]->link_thread_work_items(_merge_rs_merged_coarse, MergeRSMergedCoarse);
       
    75   _merge_rs_dirty_cards = new WorkerDataArray<size_t>(max_gc_threads, "Dirty Cards:");
       
    76   _gc_par_phases[MergeRS]->link_thread_work_items(_merge_rs_dirty_cards, MergeRSDirtyCards);
    75 
    77 
    76   _gc_par_phases[OptMergeRS] = new WorkerDataArray<double>(max_gc_threads, "Optional Remembered Sets (ms):");
    78   _gc_par_phases[OptMergeRS] = new WorkerDataArray<double>(max_gc_threads, "Optional Remembered Sets (ms):");
    77   _opt_merge_rs_merged_sparse = new WorkerDataArray<size_t>(max_gc_threads, "Merged Sparse:");
    79   _opt_merge_rs_merged_sparse = new WorkerDataArray<size_t>(max_gc_threads, "Merged Sparse:");
    78   _gc_par_phases[OptMergeRS]->link_thread_work_items(_opt_merge_rs_merged_sparse, MergeRSMergedSparse);
    80   _gc_par_phases[OptMergeRS]->link_thread_work_items(_opt_merge_rs_merged_sparse, MergeRSMergedSparse);
    79   _opt_merge_rs_merged_fine = new WorkerDataArray<size_t>(max_gc_threads, "Merged Fine:");
    81   _opt_merge_rs_merged_fine = new WorkerDataArray<size_t>(max_gc_threads, "Merged Fine:");
    80   _gc_par_phases[OptMergeRS]->link_thread_work_items(_opt_merge_rs_merged_fine, MergeRSMergedFine);
    82   _gc_par_phases[OptMergeRS]->link_thread_work_items(_opt_merge_rs_merged_fine, MergeRSMergedFine);
    81   _opt_merge_rs_merged_coarse = new WorkerDataArray<size_t>(max_gc_threads, "Merged Coarse:");
    83   _opt_merge_rs_merged_coarse = new WorkerDataArray<size_t>(max_gc_threads, "Merged Coarse:");
    82   _gc_par_phases[OptMergeRS]->link_thread_work_items(_opt_merge_rs_merged_coarse, MergeRSMergedCoarse);
    84   _gc_par_phases[OptMergeRS]->link_thread_work_items(_opt_merge_rs_merged_coarse, MergeRSMergedCoarse);
       
    85   _opt_merge_rs_dirty_cards = new WorkerDataArray<size_t>(max_gc_threads, "Dirty Cards:");
       
    86   _gc_par_phases[OptMergeRS]->link_thread_work_items(_opt_merge_rs_dirty_cards, MergeRSDirtyCards);
    83 
    87 
    84   _gc_par_phases[MergeLB] = new WorkerDataArray<double>(max_gc_threads, "Log Buffers (ms):");
    88   _gc_par_phases[MergeLB] = new WorkerDataArray<double>(max_gc_threads, "Log Buffers (ms):");
    85   if (G1HotCardCache::default_use_cache()) {
    89   if (G1HotCardCache::default_use_cache()) {
    86     _gc_par_phases[MergeHCC] = new WorkerDataArray<double>(max_gc_threads, "Hot Card Cache (ms):");
    90     _gc_par_phases[MergeHCC] = new WorkerDataArray<double>(max_gc_threads, "Hot Card Cache (ms):");
    87     _merge_hcc_dirty_cards = new WorkerDataArray<size_t>(max_gc_threads, "Dirty Cards:");
    91     _merge_hcc_dirty_cards = new WorkerDataArray<size_t>(max_gc_threads, "Dirty Cards:");
   302   return _gc_par_phases[phase]->get_thread_work_item(worker_id, index);
   306   return _gc_par_phases[phase]->get_thread_work_item(worker_id, index);
   303 }
   307 }
   304 
   308 
   305 // return the average time for a phase in milliseconds
   309 // return the average time for a phase in milliseconds
   306 double G1GCPhaseTimes::average_time_ms(GCParPhases phase) {
   310 double G1GCPhaseTimes::average_time_ms(GCParPhases phase) {
       
   311   if (_gc_par_phases[phase] == NULL) {
       
   312     return 0.0;
       
   313   }
   307   return _gc_par_phases[phase]->average() * 1000.0;
   314   return _gc_par_phases[phase]->average() * 1000.0;
   308 }
   315 }
   309 
   316 
   310 size_t G1GCPhaseTimes::sum_thread_work_items(GCParPhases phase, uint index) {
   317 size_t G1GCPhaseTimes::sum_thread_work_items(GCParPhases phase, uint index) {
       
   318   if (_gc_par_phases[phase] == NULL) {
       
   319     return 0;
       
   320   }
   311   assert(_gc_par_phases[phase]->thread_work_items(index) != NULL, "No sub count");
   321   assert(_gc_par_phases[phase]->thread_work_items(index) != NULL, "No sub count");
   312   return _gc_par_phases[phase]->thread_work_items(index)->sum();
   322   return _gc_par_phases[phase]->thread_work_items(index)->sum();
   313 }
   323 }
   314 
   324 
   315 template <class T>
   325 template <class T>