< prev index next >

src/hotspot/share/gc/g1/g1RemSet.cpp

Print this page
rev 52277 : imported patch 8071913-almost-done
rev 52281 : [mq]: 8212911-unify-reference-handling-during-gc

*** 332,342 **** _scan_state->add_dirty_region(region_idx_for_card); } void G1ScanRSForRegionClosure::scan_card(MemRegion mr, uint region_idx_for_card) { HeapRegion* const card_region = _g1h->region_at(region_idx_for_card); ! _scan_objs_on_card_cl->set_region(card_region); card_region->oops_on_card_seq_iterate_careful<true>(mr, _scan_objs_on_card_cl); _scan_objs_on_card_cl->trim_queue_partially(); _cards_scanned++; } --- 332,343 ---- _scan_state->add_dirty_region(region_idx_for_card); } void G1ScanRSForRegionClosure::scan_card(MemRegion mr, uint region_idx_for_card) { HeapRegion* const card_region = _g1h->region_at(region_idx_for_card); ! assert(!card_region->is_young(), "Should not scan card in young region %u", region_idx_for_card); ! _scan_objs_on_card_cl->set_from_is_young(false); card_region->oops_on_card_seq_iterate_careful<true>(mr, _scan_objs_on_card_cl); _scan_objs_on_card_cl->trim_queue_partially(); _cards_scanned++; }
*** 492,511 **** // Apply closure to log entries in the HCC. if (G1HotCardCache::default_use_cache()) { G1EvacPhaseTimesTracker x(p, pss, G1GCPhaseTimes::ScanHCC, worker_i); ! G1ScanObjsDuringUpdateRSClosure scan_hcc_cl(_g1h, pss, worker_i); G1RefineCardClosure refine_card_cl(_g1h, &scan_hcc_cl); _g1h->iterate_hcc_closure(&refine_card_cl, worker_i); } // Now apply the closure to all remaining log entries. { G1EvacPhaseTimesTracker x(p, pss, G1GCPhaseTimes::UpdateRS, worker_i); ! G1ScanObjsDuringUpdateRSClosure update_rs_cl(_g1h, pss, worker_i); G1RefineCardClosure refine_card_cl(_g1h, &update_rs_cl); _g1h->iterate_dirty_card_closure(&refine_card_cl, worker_i); p->record_thread_work_item(G1GCPhaseTimes::UpdateRS, worker_i, refine_card_cl.cards_scanned(), G1GCPhaseTimes::UpdateRSScannedCards); p->record_thread_work_item(G1GCPhaseTimes::UpdateRS, worker_i, refine_card_cl.cards_skipped(), G1GCPhaseTimes::UpdateRSSkippedCards); --- 493,512 ---- // Apply closure to log entries in the HCC. if (G1HotCardCache::default_use_cache()) { G1EvacPhaseTimesTracker x(p, pss, G1GCPhaseTimes::ScanHCC, worker_i); ! G1ScanObjsDuringUpdateRSClosure scan_hcc_cl(_g1h, pss); G1RefineCardClosure refine_card_cl(_g1h, &scan_hcc_cl); _g1h->iterate_hcc_closure(&refine_card_cl, worker_i); } // Now apply the closure to all remaining log entries. { G1EvacPhaseTimesTracker x(p, pss, G1GCPhaseTimes::UpdateRS, worker_i); ! G1ScanObjsDuringUpdateRSClosure update_rs_cl(_g1h, pss); G1RefineCardClosure refine_card_cl(_g1h, &update_rs_cl); _g1h->iterate_dirty_card_closure(&refine_card_cl, worker_i); p->record_thread_work_item(G1GCPhaseTimes::UpdateRS, worker_i, refine_card_cl.cards_scanned(), G1GCPhaseTimes::UpdateRSScannedCards); p->record_thread_work_item(G1GCPhaseTimes::UpdateRS, worker_i, refine_card_cl.cards_skipped(), G1GCPhaseTimes::UpdateRSSkippedCards);
*** 727,737 **** HeapWord* card_end = card_start + G1CardTable::card_size_in_words; MemRegion dirty_region(card_start, MIN2(scan_limit, card_end)); assert(!dirty_region.is_empty(), "sanity"); HeapRegion* const card_region = _g1h->region_at(card_region_idx); ! update_rs_cl->set_region(card_region); bool card_processed = card_region->oops_on_card_seq_iterate_careful<true>(dirty_region, update_rs_cl); assert(card_processed, "must be"); return true; } --- 728,739 ---- HeapWord* card_end = card_start + G1CardTable::card_size_in_words; MemRegion dirty_region(card_start, MIN2(scan_limit, card_end)); assert(!dirty_region.is_empty(), "sanity"); HeapRegion* const card_region = _g1h->region_at(card_region_idx); ! assert(!card_region->is_young(), "Should not scan card in young region %u", card_region_idx); ! update_rs_cl->set_from_is_young(false); bool card_processed = card_region->oops_on_card_seq_iterate_careful<true>(dirty_region, update_rs_cl); assert(card_processed, "must be"); return true; }
< prev index next >