< prev index next >
src/hotspot/share/gc/g1/g1RemSet.hpp
Print this page
rev 49826 : imported patch 6672778-partial-queue-trimming
rev 49827 : imported patch 6672778-refactoring
*** 30,39 ****
--- 30,40 ----
#include "gc/g1/g1OopClosures.hpp"
#include "gc/g1/g1RemSetSummary.hpp"
#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.
class BitMap;
*** 59,71 ****
G1RemSetSummary _prev_period_summary;
// 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);
// Flush remaining refinement buffers for cross-region references to either evacuate references
// into the collection set or update the remembered set.
void update_rem_set(G1ParScanThreadState* pss, uint worker_i);
--- 60,70 ----
G1RemSetSummary _prev_period_summary;
// Scan all remembered sets of the collection set for references into the collection
// set.
! 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.
void update_rem_set(G1ParScanThreadState* pss, uint worker_i);
*** 100,112 ****
// Process all oops in the collection set from the cards in the refinement buffers and
// remembered sets using pss.
//
// 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);
// Prepare for and cleanup after an oops_into_collection_set_do
// call. Must call each of these once before and after (in sequential
// code) any thread calls oops_into_collection_set_do.
void prepare_for_oops_into_collection_set_do();
--- 99,109 ----
// Process all oops in the collection set from the cards in the refinement buffers and
// remembered sets using pss.
//
// 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, 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
// code) any thread calls oops_into_collection_set_do.
void prepare_for_oops_into_collection_set_do();
*** 136,176 ****
// using the given work gang.
void rebuild_rem_set(G1ConcurrentMark* cm, WorkGang* workers, uint worker_id_offset);
};
class G1ScanRSForRegionClosure : public HeapRegionClosure {
G1RemSetScanState* _scan_state;
size_t _cards_scanned;
size_t _cards_claimed;
size_t _cards_skipped;
! G1CollectedHeap* _g1h;
!
! G1ScanObjsDuringScanRSClosure* _scan_objs_on_card_cl;
! CodeBlobClosure* _code_root_cl;
!
! G1BlockOffsetTable* _bot;
! G1CardTable *_ct;
! double _strong_code_root_scan_time_sec;
! uint _worker_i;
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_strong_code_roots(HeapRegion* r);
public:
G1ScanRSForRegionClosure(G1RemSetScanState* scan_state,
G1ScanObjsDuringScanRSClosure* scan_obj_on_card,
! CodeBlobClosure* code_root_cl,
uint worker_i);
bool do_heap_region(HeapRegion* r);
! double strong_code_root_scan_time_sec() {
! return _strong_code_root_scan_time_sec;
! }
size_t cards_scanned() const { return _cards_scanned; }
size_t cards_claimed() const { return _cards_claimed; }
size_t cards_skipped() const { return _cards_skipped; }
};
--- 133,180 ----
// using the given work gang.
void rebuild_rem_set(G1ConcurrentMark* cm, WorkGang* workers, uint worker_id_offset);
};
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;
! Tickspan _rem_set_root_scan_time;
! Tickspan _rem_set_trim_partially_time;
! 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,
! G1ParScanThreadState* pss,
uint worker_i);
bool do_heap_region(HeapRegion* r);
! 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; }
size_t cards_skipped() const { return _cards_skipped; }
};
< prev index next >