< 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 >