466 // Scan oops in the card looking for references into the collection set |
466 // Scan oops in the card looking for references into the collection set |
467 HeapWord* end = _ct_bs->addr_for(card_ptr + 1); |
467 HeapWord* end = _ct_bs->addr_for(card_ptr + 1); |
468 MemRegion scanRegion(start, end); |
468 MemRegion scanRegion(start, end); |
469 |
469 |
470 UpdateRSetImmediate update_rs_cl(_g1->g1_rem_set()); |
470 UpdateRSetImmediate update_rs_cl(_g1->g1_rem_set()); |
471 FilterIntoCSClosure update_rs_cset_oop_cl(NULL, _g1, &update_rs_cl, NULL /* rp */); |
471 FilterIntoCSClosure update_rs_cset_oop_cl(NULL, _g1, &update_rs_cl); |
472 FilterOutOfRegionClosure filter_then_update_rs_cset_oop_cl(r, &update_rs_cset_oop_cl); |
472 FilterOutOfRegionClosure filter_then_update_rs_cset_oop_cl(r, &update_rs_cset_oop_cl); |
473 |
473 |
474 // We can pass false as the "filter_young" parameter here as: |
474 // We can pass false as the "filter_young" parameter here as: |
475 // * we should be in a STW pause, |
475 // * we should be in a STW pause, |
476 // * the DCQS to which this closure is applied is used to hold |
476 // * the DCQS to which this closure is applied is used to hold |
642 check_for_refs_into_cset, |
642 check_for_refs_into_cset, |
643 worker_i); |
643 worker_i); |
644 update_rs_oop_cl.set_from(r); |
644 update_rs_oop_cl.set_from(r); |
645 |
645 |
646 TriggerClosure trigger_cl; |
646 TriggerClosure trigger_cl; |
647 FilterIntoCSClosure into_cs_cl(NULL, _g1, &trigger_cl, NULL /* rp */); |
647 FilterIntoCSClosure into_cs_cl(NULL, _g1, &trigger_cl); |
648 InvokeIfNotTriggeredClosure invoke_cl(&trigger_cl, &into_cs_cl); |
648 InvokeIfNotTriggeredClosure invoke_cl(&trigger_cl, &into_cs_cl); |
649 Mux2Closure mux(&invoke_cl, &update_rs_oop_cl); |
649 Mux2Closure mux(&invoke_cl, &update_rs_oop_cl); |
650 |
650 |
651 FilterOutOfRegionClosure filter_then_update_rs_oop_cl(r, |
651 FilterOutOfRegionClosure filter_then_update_rs_oop_cl(r, |
652 (check_for_refs_into_cset ? |
652 (check_for_refs_into_cset ? |