--- old/src/hotspot/share/gc/g1/g1RemSet.hpp 2018-04-19 10:05:36.376398523 +0200 +++ new/src/hotspot/share/gc/g1/g1RemSet.hpp 2018-04-19 10:05:36.084389521 +0200 @@ -32,6 +32,7 @@ #include "gc/g1/heapRegion.hpp" #include "memory/allocation.hpp" #include "memory/iterator.hpp" +#include "utilities/ticks.hpp" // A G1RemSet provides ways of iterating over pointers into a selected // collection set. @@ -61,9 +62,7 @@ // Scan all remembered sets of the collection set for references into the collection // set. - void scan_rem_set(G1ParScanThreadState* pss, - CodeBlobClosure* heap_region_codeblobs, - uint worker_i); + void scan_rem_set(G1ParScanThreadState* pss, uint worker_i); // Flush remaining refinement buffers for cross-region references to either evacuate references // into the collection set or update the remembered set. @@ -102,9 +101,7 @@ // // Further applies heap_region_codeblobs on the oops of the unmarked nmethods on the strong code // roots list for each region in the collection set. - void oops_into_collection_set_do(G1ParScanThreadState* pss, - CodeBlobClosure* heap_region_codeblobs, - uint worker_i); + void oops_into_collection_set_do(G1ParScanThreadState* pss, uint worker_i); // Prepare for and cleanup after an oops_into_collection_set_do // call. Must call each of these once before and after (in sequential @@ -138,37 +135,44 @@ }; class G1ScanRSForRegionClosure : public HeapRegionClosure { + G1CollectedHeap* _g1h; + G1CardTable *_ct; + + G1ParScanThreadState* _pss; + G1ScanObjsDuringScanRSClosure* _scan_objs_on_card_cl; + G1RemSetScanState* _scan_state; + uint _worker_i; + size_t _cards_scanned; size_t _cards_claimed; size_t _cards_skipped; - G1CollectedHeap* _g1h; + Tickspan _rem_set_root_scan_time; + Tickspan _rem_set_trim_partially_time; - G1ScanObjsDuringScanRSClosure* _scan_objs_on_card_cl; - CodeBlobClosure* _code_root_cl; - - G1BlockOffsetTable* _bot; - G1CardTable *_ct; - - double _strong_code_root_scan_time_sec; - uint _worker_i; + Tickspan _strong_code_root_scan_time; + Tickspan _strong_code_trim_partially_time; void claim_card(size_t card_index, const uint region_idx_for_card); void scan_card(MemRegion mr, uint region_idx_for_card); + + void scan_rem_set_roots(HeapRegion* r); void scan_strong_code_roots(HeapRegion* r); public: G1ScanRSForRegionClosure(G1RemSetScanState* scan_state, G1ScanObjsDuringScanRSClosure* scan_obj_on_card, - CodeBlobClosure* code_root_cl, + G1ParScanThreadState* pss, uint worker_i); bool do_heap_region(HeapRegion* r); - double strong_code_root_scan_time_sec() { - return _strong_code_root_scan_time_sec; - } + Tickspan rem_set_root_scan_time() const { return _rem_set_root_scan_time; } + Tickspan rem_set_trim_partially_time() const { return _rem_set_trim_partially_time; } + + Tickspan strong_code_root_scan_time() { return _strong_code_root_scan_time; } + Tickspan strong_code_root_trim_partially_time() { return _strong_code_trim_partially_time; } size_t cards_scanned() const { return _cards_scanned; } size_t cards_claimed() const { return _cards_claimed; }