< prev index next >

src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp

Print this page
rev 52675 : 8213890: Implementation of JEP 344: Abortable Mixed Collections for G1
Reviewed-by:
Contributed-by: erik.helin@oracle.com, stefan.johansson@oracle.com
rev 52676 : imported patch AMGC-impl
rev 52679 : imported patch AMGC-tsch-rev1-log
rev 52680 : imported patch AMGC-tsch-rev2
rev 52681 : [mq]: AMGC-kbar-rev1

@@ -61,15 +61,17 @@
     WeakCLDRoots,
     SATBFiltering,
     UpdateRS,
     ScanHCC,
     ScanRS,
+    OptScanRS,
     CodeRoots,
 #if INCLUDE_AOT
     AOTCodeRoots,
 #endif
     ObjCopy,
+    OptObjCopy,
     Termination,
     Other,
     GCWorkerTotal,
     GCWorkerEnd,
     StringDedupQueueFixup,

@@ -90,10 +92,17 @@
     UpdateRSProcessedBuffers,
     UpdateRSScannedCards,
     UpdateRSSkippedCards
   };
 
+  enum GCOptCSetWorkItems {
+      OptCSetScannedCards,
+      OptCSetClaimedCards,
+      OptCSetSkippedCards,
+      OptCSetUsedMemory
+  };
+
  private:
   // Markers for grouping the phases in the GCPhases enum above
   static const int GCMainParPhasesLast = GCWorkerEnd;
   static const int StringDedupPhasesFirst = StringDedupQueueFixup;
   static const int StringDedupPhasesLast = StringDedupTableFixup;

@@ -106,15 +115,21 @@
 
   WorkerDataArray<size_t>* _scan_rs_scanned_cards;
   WorkerDataArray<size_t>* _scan_rs_claimed_cards;
   WorkerDataArray<size_t>* _scan_rs_skipped_cards;
 
+  WorkerDataArray<size_t>* _opt_cset_scanned_cards;
+  WorkerDataArray<size_t>* _opt_cset_claimed_cards;
+  WorkerDataArray<size_t>* _opt_cset_skipped_cards;
+  WorkerDataArray<size_t>* _opt_cset_used_memory;
+
   WorkerDataArray<size_t>* _termination_attempts;
 
   WorkerDataArray<size_t>* _redirtied_cards;
 
   double _cur_collection_par_time_ms;
+  double _cur_optional_evac_ms;
   double _cur_collection_code_root_fixup_time_ms;
   double _cur_strong_code_root_purge_time_ms;
 
   double _cur_evac_fail_recalc_used;
   double _cur_evac_fail_remove_self_forwards;

@@ -182,10 +197,11 @@
   void trace_time(const char* name, double value) const;
   void trace_count(const char* name, size_t value) const;
 
   double print_pre_evacuate_collection_set() const;
   double print_evacuate_collection_set() const;
+  double print_evacuate_optional_collection_set() const;
   double print_post_evacuate_collection_set() const;
   void print_other(double accounted_ms) const;
 
  public:
   G1GCPhaseTimes(STWGCTimer* gc_timer, uint max_gc_threads);

@@ -197,14 +213,16 @@
   void record_time_secs(GCParPhases phase, uint worker_i, double secs);
 
   // add a number of seconds to a phase
   void add_time_secs(GCParPhases phase, uint worker_i, double secs);
 
-  void record_or_add_objcopy_time_secs(uint worker_i, double secs);
+  void record_or_add_time_secs(GCParPhases phase, uint worker_i, double secs);
 
   void record_thread_work_item(GCParPhases phase, uint worker_i, size_t count, uint index = 0);
 
+  void record_or_add_thread_work_item(GCParPhases phase, uint worker_i, size_t count, uint index = 0);
+
   // return the average time for a phase in milliseconds
   double average_time_ms(GCParPhases phase);
 
   size_t sum_thread_work_items(GCParPhases phase, uint index = 0);
 

@@ -232,10 +250,14 @@
 
   void record_par_time(double ms) {
     _cur_collection_par_time_ms = ms;
   }
 
+  void record_optional_evacuation(double ms) {
+    _cur_optional_evac_ms = ms;
+  }
+
   void record_code_root_fixup_time(double ms) {
     _cur_collection_code_root_fixup_time_ms = ms;
   }
 
   void record_strong_code_root_purge_time(double ms) {
< prev index next >