< prev index next >

src/share/vm/gc_implementation/g1/g1RemSet.cpp

Print this page
rev 7555 : [mq]: propagate_scanrs_closure

*** 78,88 **** _cset_rs_update_cl(NULL), _cards_scanned(NULL), _total_cards_scanned(0), _prev_period_summary() { _seq_task = new SubTasksDone(NumSeqTasks); ! _cset_rs_update_cl = NEW_C_HEAP_ARRAY(OopsInHeapRegionClosure*, n_workers(), mtGC); for (uint i = 0; i < n_workers(); i++) { _cset_rs_update_cl[i] = NULL; } if (G1SummarizeRSetStats) { _prev_period_summary.initialize(this); --- 78,88 ---- _cset_rs_update_cl(NULL), _cards_scanned(NULL), _total_cards_scanned(0), _prev_period_summary() { _seq_task = new SubTasksDone(NumSeqTasks); ! _cset_rs_update_cl = NEW_C_HEAP_ARRAY(G1ParPushHeapRSClosure*, n_workers(), mtGC); for (uint i = 0; i < n_workers(); i++) { _cset_rs_update_cl[i] = NULL; } if (G1SummarizeRSetStats) { _prev_period_summary.initialize(this);
*** 92,109 **** G1RemSet::~G1RemSet() { delete _seq_task; for (uint i = 0; i < n_workers(); i++) { assert(_cset_rs_update_cl[i] == NULL, "it should be"); } ! FREE_C_HEAP_ARRAY(OopsInHeapRegionClosure*, _cset_rs_update_cl); } class ScanRSClosure : public HeapRegionClosure { size_t _cards_done, _cards; G1CollectedHeap* _g1h; ! OopsInHeapRegionClosure* _oc; CodeBlobClosure* _code_root_cl; G1BlockOffsetSharedArray* _bot_shared; G1SATBCardTableModRefBS *_ct_bs; --- 92,109 ---- G1RemSet::~G1RemSet() { delete _seq_task; for (uint i = 0; i < n_workers(); i++) { assert(_cset_rs_update_cl[i] == NULL, "it should be"); } ! FREE_C_HEAP_ARRAY(G1ParPushHeapRSClosure*, _cset_rs_update_cl); } class ScanRSClosure : public HeapRegionClosure { size_t _cards_done, _cards; G1CollectedHeap* _g1h; ! G1ParPushHeapRSClosure* _oc; CodeBlobClosure* _code_root_cl; G1BlockOffsetSharedArray* _bot_shared; G1SATBCardTableModRefBS *_ct_bs;
*** 111,121 **** uint _worker_i; int _block_size; bool _try_claimed; public: ! ScanRSClosure(OopsInHeapRegionClosure* oc, CodeBlobClosure* code_root_cl, uint worker_i) : _oc(oc), _code_root_cl(code_root_cl), _strong_code_root_scan_time_sec(0.0), --- 111,121 ---- uint _worker_i; int _block_size; bool _try_claimed; public: ! ScanRSClosure(G1ParPushHeapRSClosure* oc, CodeBlobClosure* code_root_cl, uint worker_i) : _oc(oc), _code_root_cl(code_root_cl), _strong_code_root_scan_time_sec(0.0),
*** 133,144 **** void set_try_claimed() { _try_claimed = true; } void scanCard(size_t index, HeapRegion *r) { // Stack allocate the DirtyCardToOopClosure instance HeapRegionDCTOC cl(_g1h, r, _oc, ! CardTableModRefBS::Precise, ! HeapRegionDCTOC::IntoCSFilterKind); // Set the "from" region in the closure. _oc->set_region(r); MemRegion card_region(_bot_shared->address_for_index(index), G1BlockOffsetSharedArray::N_words); MemRegion pre_gc_allocated(r->bottom(), r->scan_top()); --- 133,143 ---- void set_try_claimed() { _try_claimed = true; } void scanCard(size_t index, HeapRegion *r) { // Stack allocate the DirtyCardToOopClosure instance HeapRegionDCTOC cl(_g1h, r, _oc, ! CardTableModRefBS::Precise); // Set the "from" region in the closure. _oc->set_region(r); MemRegion card_region(_bot_shared->address_for_index(index), G1BlockOffsetSharedArray::N_words); MemRegion pre_gc_allocated(r->bottom(), r->scan_top());
*** 229,239 **** size_t cards_done() { return _cards_done;} size_t cards_looked_up() { return _cards;} }; ! void G1RemSet::scanRS(OopsInHeapRegionClosure* oc, CodeBlobClosure* code_root_cl, uint worker_i) { double rs_time_start = os::elapsedTime(); HeapRegion *startRegion = _g1->start_cset_region_for_worker(worker_i); --- 228,238 ---- size_t cards_done() { return _cards_done;} size_t cards_looked_up() { return _cards;} }; ! void G1RemSet::scanRS(G1ParPushHeapRSClosure* oc, CodeBlobClosure* code_root_cl, uint worker_i) { double rs_time_start = os::elapsedTime(); HeapRegion *startRegion = _g1->start_cset_region_for_worker(worker_i);
*** 299,309 **** void G1RemSet::cleanupHRRS() { HeapRegionRemSet::cleanup(); } ! void G1RemSet::oops_into_collection_set_do(OopsInHeapRegionClosure* oc, CodeBlobClosure* code_root_cl, uint worker_i) { #if CARD_REPEAT_HISTO ct_freq_update_histo_and_reset(); #endif --- 298,308 ---- void G1RemSet::cleanupHRRS() { HeapRegionRemSet::cleanup(); } ! void G1RemSet::oops_into_collection_set_do(G1ParPushHeapRSClosure* oc, CodeBlobClosure* code_root_cl, uint worker_i) { #if CARD_REPEAT_HISTO ct_freq_update_histo_and_reset(); #endif
*** 415,425 **** _c1(c1), _c2(c2) { } G1UpdateRSOrPushRefOopClosure:: G1UpdateRSOrPushRefOopClosure(G1CollectedHeap* g1h, G1RemSet* rs, ! OopsInHeapRegionClosure* push_ref_cl, bool record_refs_into_cset, uint worker_i) : _g1(g1h), _g1_rem_set(rs), _from(NULL), _record_refs_into_cset(record_refs_into_cset), _push_ref_cl(push_ref_cl), _worker_i(worker_i) { } --- 414,424 ---- _c1(c1), _c2(c2) { } G1UpdateRSOrPushRefOopClosure:: G1UpdateRSOrPushRefOopClosure(G1CollectedHeap* g1h, G1RemSet* rs, ! G1ParPushHeapRSClosure* push_ref_cl, bool record_refs_into_cset, uint worker_i) : _g1(g1h), _g1_rem_set(rs), _from(NULL), _record_refs_into_cset(record_refs_into_cset), _push_ref_cl(push_ref_cl), _worker_i(worker_i) { }
*** 516,526 **** #if CARD_REPEAT_HISTO init_ct_freq_table(_g1->max_capacity()); ct_freq_note_card(_ct_bs->index_for(start)); #endif ! OopsInHeapRegionClosure* oops_in_heap_closure = NULL; if (check_for_refs_into_cset) { // ConcurrentG1RefineThreads have worker numbers larger than what // _cset_rs_update_cl[] is set up to handle. But those threads should // only be active outside of a collection which means that when they // reach here they should have check_for_refs_into_cset == false. --- 515,525 ---- #if CARD_REPEAT_HISTO init_ct_freq_table(_g1->max_capacity()); ct_freq_note_card(_ct_bs->index_for(start)); #endif ! G1ParPushHeapRSClosure* oops_in_heap_closure = NULL; if (check_for_refs_into_cset) { // ConcurrentG1RefineThreads have worker numbers larger than what // _cset_rs_update_cl[] is set up to handle. But those threads should // only be active outside of a collection which means that when they // reach here they should have check_for_refs_into_cset == false.
< prev index next >