< prev index next >
src/share/vm/gc/g1/g1RemSet.hpp
Print this page
rev 13131 : imported patch 8178148-more-detailed-scan-rs-logging
rev 13132 : imported patch 8178148-sangheon-review
rev 13135 : imported patch 8175554-improve-g1updatersorpushrefclosure
rev 13137 : imported patch 8175554-erikd-review2
rev 13138 : [mq]: 8175554-erikd-review3
*** 39,52 ****
class CardTableModRefBS;
class G1BlockOffsetTable;
class CodeBlobClosure;
class G1CollectedHeap;
class G1HotCardCache;
- class G1ParPushHeapRSClosure;
class G1RemSetScanState;
class G1Policy;
class G1SATBCardTableModRefBS;
class HeapRegionClaimer;
// A G1RemSet in which each heap region has a rem set that records the
// external heap references into it. Uses a mod ref bs to track updates,
// so that they can be used to update the individual region remsets.
--- 39,54 ----
class CardTableModRefBS;
class G1BlockOffsetTable;
class CodeBlobClosure;
class G1CollectedHeap;
class G1HotCardCache;
class G1RemSetScanState;
+ class G1ParScanThreadState;
class G1Policy;
class G1SATBCardTableModRefBS;
+ class G1ScanObjsDuringScanRSClosure;
+ class G1ScanObjsDuringUpdateRSClosure;
class HeapRegionClaimer;
// A G1RemSet in which each heap region has a rem set that records the
// external heap references into it. Uses a mod ref bs to track updates,
// so that they can be used to update the individual region remsets.
*** 92,116 ****
G1RemSet(G1CollectedHeap* g1,
CardTableModRefBS* ct_bs,
G1HotCardCache* hot_card_cache);
~G1RemSet();
! // Invoke "cl->do_oop" on all pointers into the collection set
! // from objects in regions outside the collection set (having
! // invoked "cl->set_region" to set the "from" region correctly
! // beforehand.)
//
! // Apply non_heap_roots on the oops of the unmarked nmethods
! // on the strong code roots list for each region in the
! // collection set.
! //
! // The "worker_i" param is for the parallel case where the id
! // of the worker thread calling this function can be helpful in
! // partitioning the work to be done. It should be the same as
! // the "i" passed to the calling thread's work(i) function.
! // In the sequential case this param will be ignored.
! void oops_into_collection_set_do(G1ParPushHeapRSClosure* cl,
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
--- 94,109 ----
G1RemSet(G1CollectedHeap* g1,
CardTableModRefBS* ct_bs,
G1HotCardCache* hot_card_cache);
~G1RemSet();
! // 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
*** 118,136 ****
// opportunity to sequential setup and teardown of structures needed by a
// parallel iteration over the CS's RS.)
void prepare_for_oops_into_collection_set_do();
void cleanup_after_oops_into_collection_set_do();
! void scan_rem_set(G1ParPushHeapRSClosure* oops_in_heap_closure,
CodeBlobClosure* heap_region_codeblobs,
uint worker_i);
G1RemSetScanState* scan_state() const { return _scan_state; }
// Flush remaining refinement buffers into the remembered set,
// applying oops_in_heap_closure on the references found.
! void update_rem_set(DirtyCardQueue* into_cset_dcq, G1ParPushHeapRSClosure* oops_in_heap_closure, uint worker_i);
// Record, if necessary, the fact that *p (where "p" is in region "from",
// which is required to be non-NULL) has changed to a new non-NULL value.
template <class T> void par_write_ref(HeapRegion* from, T* p, uint tid);
--- 111,129 ----
// opportunity to sequential setup and teardown of structures needed by a
// parallel iteration over the CS's RS.)
void prepare_for_oops_into_collection_set_do();
void cleanup_after_oops_into_collection_set_do();
! void scan_rem_set(G1ScanObjsDuringScanRSClosure* oops_in_heap_closure,
CodeBlobClosure* heap_region_codeblobs,
uint worker_i);
G1RemSetScanState* scan_state() const { return _scan_state; }
// Flush remaining refinement buffers into the remembered set,
// applying oops_in_heap_closure on the references found.
! void update_rem_set(DirtyCardQueue* into_cset_dcq, G1ScanObjsDuringUpdateRSClosure* oops_in_heap_closure, uint worker_i);
// Record, if necessary, the fact that *p (where "p" is in region "from",
// which is required to be non-NULL) has changed to a new non-NULL value.
template <class T> void par_write_ref(HeapRegion* from, T* p, uint tid);
*** 147,158 ****
uint worker_i);
// Refine the card corresponding to "card_ptr". Returns "true" if the given card contains
// oops that have references into the current collection set.
bool refine_card_during_gc(jbyte* card_ptr,
! uint worker_i,
! G1ParPushHeapRSClosure* oops_in_heap_closure);
// Print accumulated summary info from the start of the VM.
void print_summary_info();
// Print accumulated summary info from the last time called.
--- 140,150 ----
uint worker_i);
// Refine the card corresponding to "card_ptr". Returns "true" if the given card contains
// oops that have references into the current collection set.
bool refine_card_during_gc(jbyte* card_ptr,
! G1ScanObjsDuringUpdateRSClosure* oops_in_heap_closure);
// Print accumulated summary info from the start of the VM.
void print_summary_info();
// Print accumulated summary info from the last time called.
*** 186,196 ****
size_t _cards_claimed;
size_t _cards_skipped;
G1CollectedHeap* _g1h;
! G1ParPushHeapRSClosure* _push_heap_cl;
CodeBlobClosure* _code_root_cl;
G1BlockOffsetTable* _bot;
G1SATBCardTableModRefBS *_ct_bs;
--- 178,188 ----
size_t _cards_claimed;
size_t _cards_skipped;
G1CollectedHeap* _g1h;
! G1ScanObjsDuringScanRSClosure* _scan_objs_on_card_cl;
CodeBlobClosure* _code_root_cl;
G1BlockOffsetTable* _bot;
G1SATBCardTableModRefBS *_ct_bs;
*** 200,210 ****
void scan_card(size_t index, HeapWord* card_start, HeapRegion *r);
void scan_strong_code_roots(HeapRegion* r);
public:
G1ScanRSClosure(G1RemSetScanState* scan_state,
! G1ParPushHeapRSClosure* push_heap_cl,
CodeBlobClosure* code_root_cl,
uint worker_i);
bool doHeapRegion(HeapRegion* r);
--- 192,202 ----
void scan_card(size_t index, HeapWord* card_start, HeapRegion *r);
void scan_strong_code_roots(HeapRegion* r);
public:
G1ScanRSClosure(G1RemSetScanState* scan_state,
! G1ScanObjsDuringScanRSClosure* scan_obj_on_card,
CodeBlobClosure* code_root_cl,
uint worker_i);
bool doHeapRegion(HeapRegion* r);
< prev index next >