--- old/src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp 2019-03-13 14:03:05.663153797 +0100 +++ new/src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp 2019-03-13 14:03:05.454148121 +0100 @@ -67,9 +67,11 @@ ScanRS, OptScanRS, CodeRoots, + OptCodeRoots, ObjCopy, OptObjCopy, Termination, + OptTermination, Other, GCWorkerTotal, GCWorkerEnd, @@ -87,7 +89,9 @@ enum GCScanRSWorkItems { ScanRSScannedCards, ScanRSClaimedCards, - ScanRSSkippedCards + ScanRSSkippedCards, + ScanRSScannedOptRefs, + ScanRSUsedMemory }; enum GCUpdateRSWorkItems { @@ -101,13 +105,6 @@ ObjCopyLABUndoWaste }; - enum GCOptCSetWorkItems { - OptCSetScannedCards, - OptCSetClaimedCards, - OptCSetSkippedCards, - OptCSetUsedMemory - }; - private: // Markers for grouping the phases in the GCPhases enum above static const int GCMainParPhasesLast = GCWorkerEnd; @@ -122,19 +119,25 @@ WorkerDataArray* _scan_rs_claimed_cards; WorkerDataArray* _scan_rs_skipped_cards; + WorkerDataArray* _opt_scan_rs_scanned_cards; + WorkerDataArray* _opt_scan_rs_claimed_cards; + WorkerDataArray* _opt_scan_rs_skipped_cards; + WorkerDataArray* _opt_scan_rs_scanned_opt_refs; + WorkerDataArray* _opt_scan_rs_used_memory; + WorkerDataArray* _obj_copy_lab_waste; WorkerDataArray* _obj_copy_lab_undo_waste; - WorkerDataArray* _opt_cset_scanned_cards; - WorkerDataArray* _opt_cset_claimed_cards; - WorkerDataArray* _opt_cset_skipped_cards; - WorkerDataArray* _opt_cset_used_memory; + WorkerDataArray* _opt_obj_copy_lab_waste; + WorkerDataArray* _opt_obj_copy_lab_undo_waste; WorkerDataArray* _termination_attempts; + WorkerDataArray* _opt_termination_attempts; + WorkerDataArray* _redirtied_cards; - double _cur_collection_par_time_ms; + double _cur_collection_initial_evac_time_ms; double _cur_optional_evac_ms; double _cur_collection_code_root_fixup_time_ms; double _cur_strong_code_root_purge_time_ms; @@ -225,10 +228,14 @@ void record_or_add_time_secs(GCParPhases phase, uint worker_i, double secs); + double get_time_secs(GCParPhases phase, uint worker_i); + 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); + size_t get_thread_work_item(GCParPhases phase, uint worker_i, uint index = 0); + // return the average time for a phase in milliseconds double average_time_ms(GCParPhases phase); @@ -256,16 +263,16 @@ _cur_expand_heap_time_ms = ms; } - void record_par_time(double ms) { - _cur_collection_par_time_ms = ms; + void record_or_add_initial_evac_time(double ms) { + _cur_collection_initial_evac_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_or_add_code_root_fixup_time(double ms) { + _cur_collection_code_root_fixup_time_ms += ms; } void record_strong_code_root_purge_time(double ms) { @@ -360,7 +367,7 @@ } double cur_collection_par_time_ms() { - return _cur_collection_par_time_ms; + return _cur_collection_initial_evac_time_ms; } double cur_clear_ct_time_ms() {