--- a/src/hotspot/share/gc/g1/g1RemSet.hpp Fri Apr 27 10:59:46 2018 +0200
+++ b/src/hotspot/share/gc/g1/g1RemSet.hpp Fri Apr 27 12:06:46 2018 +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;
-
- G1ScanObjsDuringScanRSClosure* _scan_objs_on_card_cl;
- CodeBlobClosure* _code_root_cl;
+ Tickspan _rem_set_root_scan_time;
+ Tickspan _rem_set_trim_partially_time;
- 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() const { return _strong_code_root_scan_time; }
+ Tickspan strong_code_root_trim_partially_time() const { return _strong_code_trim_partially_time; }
size_t cards_scanned() const { return _cards_scanned; }
size_t cards_claimed() const { return _cards_claimed; }