src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp
changeset 59198 92c98aa0f801
parent 58796 7608c17b7463
child 59319 9ee940f1de90
equal deleted inserted replaced
59197:bb3472aa26c8 59198:92c98aa0f801
    76     StringDedupQueueFixup,
    76     StringDedupQueueFixup,
    77     StringDedupTableFixup,
    77     StringDedupTableFixup,
    78     RedirtyCards,
    78     RedirtyCards,
    79     YoungFreeCSet,
    79     YoungFreeCSet,
    80     NonYoungFreeCSet,
    80     NonYoungFreeCSet,
       
    81     MergePSS,
    81     GCParPhasesSentinel
    82     GCParPhasesSentinel
    82   };
    83   };
    83 
    84 
    84   static const GCParPhases ExtRootScanSubPhasesFirst = ThreadRoots;
    85   static const GCParPhases ExtRootScanSubPhasesFirst = ThreadRoots;
    85   static const GCParPhases ExtRootScanSubPhasesLast = CMRefRoots;
    86   static const GCParPhases ExtRootScanSubPhasesLast = CMRefRoots;
   106   enum GCMergeLBWorkItems {
   107   enum GCMergeLBWorkItems {
   107     MergeLBDirtyCards,
   108     MergeLBDirtyCards,
   108     MergeLBSkippedCards
   109     MergeLBSkippedCards
   109   };
   110   };
   110 
   111 
   111   enum GCObjCopyWorkItems {
   112   enum GCMergePSSWorkItems {
   112     ObjCopyLABWaste,
   113     MergePSSCopiedBytes,
   113     ObjCopyLABUndoWaste
   114     MergePSSLABWasteBytes,
       
   115     MergePSSLABUndoWasteBytes
   114   };
   116   };
   115 
   117 
   116  private:
   118  private:
   117   // Markers for grouping the phases in the GCPhases enum above
   119   // Markers for grouping the phases in the GCPhases enum above
   118   static const int GCMainParPhasesLast = GCWorkerEnd;
   120   static const int GCMainParPhasesLast = GCWorkerEnd;
   141   WorkerDataArray<size_t>* _opt_scan_hr_scanned_blocks;
   143   WorkerDataArray<size_t>* _opt_scan_hr_scanned_blocks;
   142   WorkerDataArray<size_t>* _opt_scan_hr_claimed_chunks;
   144   WorkerDataArray<size_t>* _opt_scan_hr_claimed_chunks;
   143   WorkerDataArray<size_t>* _opt_scan_hr_scanned_opt_refs;
   145   WorkerDataArray<size_t>* _opt_scan_hr_scanned_opt_refs;
   144   WorkerDataArray<size_t>* _opt_scan_hr_used_memory;
   146   WorkerDataArray<size_t>* _opt_scan_hr_used_memory;
   145 
   147 
   146   WorkerDataArray<size_t>* _obj_copy_lab_waste;
   148   WorkerDataArray<size_t>* _merge_pss_copied_bytes;
   147   WorkerDataArray<size_t>* _obj_copy_lab_undo_waste;
   149   WorkerDataArray<size_t>* _merge_pss_lab_waste_bytes;
   148 
   150   WorkerDataArray<size_t>* _merge_pss_lab_undo_waste_bytes;
   149   WorkerDataArray<size_t>* _opt_obj_copy_lab_waste;
       
   150   WorkerDataArray<size_t>* _opt_obj_copy_lab_undo_waste;
       
   151 
   151 
   152   WorkerDataArray<size_t>* _termination_attempts;
   152   WorkerDataArray<size_t>* _termination_attempts;
   153 
   153 
   154   WorkerDataArray<size_t>* _opt_termination_attempts;
   154   WorkerDataArray<size_t>* _opt_termination_attempts;
   155 
   155 
   222   void reset();
   222   void reset();
   223 
   223 
   224   template <class T>
   224   template <class T>
   225   void details(T* phase, const char* indent) const;
   225   void details(T* phase, const char* indent) const;
   226 
   226 
       
   227   void log_work_items(WorkerDataArray<double>* phase, uint indent, outputStream* out) const;
   227   void log_phase(WorkerDataArray<double>* phase, uint indent, outputStream* out, bool print_sum) const;
   228   void log_phase(WorkerDataArray<double>* phase, uint indent, outputStream* out, bool print_sum) const;
       
   229   void debug_serial_phase(WorkerDataArray<double>* phase, uint extra_indent = 0) const;
   228   void debug_phase(WorkerDataArray<double>* phase, uint extra_indent = 0) const;
   230   void debug_phase(WorkerDataArray<double>* phase, uint extra_indent = 0) const;
   229   void trace_phase(WorkerDataArray<double>* phase, bool print_sum = true) const;
   231   void trace_phase(WorkerDataArray<double>* phase, bool print_sum = true) const;
   230 
   232 
   231   void info_time(const char* name, double value) const;
   233   void info_time(const char* name, double value) const;
   232   void debug_time(const char* name, double value) const;
   234   void debug_time(const char* name, double value) const;
   267   // return the average time for a phase in milliseconds
   269   // return the average time for a phase in milliseconds
   268   double average_time_ms(GCParPhases phase);
   270   double average_time_ms(GCParPhases phase);
   269 
   271 
   270   size_t sum_thread_work_items(GCParPhases phase, uint index = 0);
   272   size_t sum_thread_work_items(GCParPhases phase, uint index = 0);
   271 
   273 
   272  public:
       
   273 
       
   274   void record_prepare_tlab_time_ms(double ms) {
   274   void record_prepare_tlab_time_ms(double ms) {
   275     _cur_prepare_tlab_time_ms = ms;
   275     _cur_prepare_tlab_time_ms = ms;
   276   }
   276   }
   277 
   277 
   278   void record_resize_tlab_time_ms(double ms) {
   278   void record_resize_tlab_time_ms(double ms) {
   374     _recorded_redirty_logged_cards_time_ms = time_ms;
   374     _recorded_redirty_logged_cards_time_ms = time_ms;
   375   }
   375   }
   376 
   376 
   377   void record_preserve_cm_referents_time_ms(double time_ms) {
   377   void record_preserve_cm_referents_time_ms(double time_ms) {
   378     _recorded_preserve_cm_referents_time_ms = time_ms;
   378     _recorded_preserve_cm_referents_time_ms = time_ms;
   379   }
       
   380 
       
   381   void record_merge_pss_time_ms(double time_ms) {
       
   382     _recorded_merge_pss_time_ms = time_ms;
       
   383   }
   379   }
   384 
   380 
   385   void record_start_new_cset_time_ms(double time_ms) {
   381   void record_start_new_cset_time_ms(double time_ms) {
   386     _recorded_start_new_cset_time_ms = time_ms;
   382     _recorded_start_new_cset_time_ms = time_ms;
   387   }
   383   }