< prev index next >

src/share/vm/gc/g1/g1CollectedHeap.cpp

Print this page
rev 8883 : 8134509: G1ParCopyClosure does not need a ReferenceProcessor

*** 4582,4593 **** public: G1CLDClosure(G1ParCopyClosure<G1BarrierNone, do_mark_object>* oop_closure, bool only_young, bool claim) : _oop_closure(oop_closure), _oop_in_klass_closure(oop_closure->g1(), ! oop_closure->pss(), ! oop_closure->rp()), _klass_in_cld_closure(&_oop_in_klass_closure, only_young), _claim(claim) { } --- 4582,4592 ---- public: G1CLDClosure(G1ParCopyClosure<G1BarrierNone, do_mark_object>* oop_closure, bool only_young, bool claim) : _oop_closure(oop_closure), _oop_in_klass_closure(oop_closure->g1(), ! oop_closure->pss()), _klass_in_cld_closure(&_oop_in_klass_closure, only_young), _claim(claim) { }
*** 4612,4633 **** pss->set_ref_processor(rp); bool only_young = _g1h->collector_state()->gcs_are_young(); // Non-IM young GC. ! G1ParCopyClosure<G1BarrierNone, G1MarkNone> scan_only_root_cl(_g1h, pss, rp); G1CLDClosure<G1MarkNone> scan_only_cld_cl(&scan_only_root_cl, only_young, // Only process dirty klasses. false); // No need to claim CLDs. // IM young GC. // Strong roots closures. ! G1ParCopyClosure<G1BarrierNone, G1MarkFromRoot> scan_mark_root_cl(_g1h, pss, rp); G1CLDClosure<G1MarkFromRoot> scan_mark_cld_cl(&scan_mark_root_cl, false, // Process all klasses. true); // Need to claim CLDs. // Weak roots closures. ! G1ParCopyClosure<G1BarrierNone, G1MarkPromotedFromRoot> scan_mark_weak_root_cl(_g1h, pss, rp); G1CLDClosure<G1MarkPromotedFromRoot> scan_mark_weak_cld_cl(&scan_mark_weak_root_cl, false, // Process all klasses. true); // Need to claim CLDs. OopClosure* strong_root_cl; --- 4611,4632 ---- pss->set_ref_processor(rp); bool only_young = _g1h->collector_state()->gcs_are_young(); // Non-IM young GC. ! G1ParCopyClosure<G1BarrierNone, G1MarkNone> scan_only_root_cl(_g1h, pss); G1CLDClosure<G1MarkNone> scan_only_cld_cl(&scan_only_root_cl, only_young, // Only process dirty klasses. false); // No need to claim CLDs. // IM young GC. // Strong roots closures. ! G1ParCopyClosure<G1BarrierNone, G1MarkFromRoot> scan_mark_root_cl(_g1h, pss); G1CLDClosure<G1MarkFromRoot> scan_mark_cld_cl(&scan_mark_root_cl, false, // Process all klasses. true); // Need to claim CLDs. // Weak roots closures. ! G1ParCopyClosure<G1BarrierNone, G1MarkPromotedFromRoot> scan_mark_weak_root_cl(_g1h, pss); G1CLDClosure<G1MarkPromotedFromRoot> scan_mark_weak_cld_cl(&scan_mark_weak_root_cl, false, // Process all klasses. true); // Need to claim CLDs. OopClosure* strong_root_cl;
*** 5322,5334 **** G1STWIsAliveClosure is_alive(_g1h); G1ParScanThreadState* pss = _pss[worker_id]; pss->set_ref_processor(NULL); ! G1ParScanExtRootClosure only_copy_non_heap_cl(_g1h, pss, NULL); ! G1ParScanAndMarkExtRootClosure copy_mark_non_heap_cl(_g1h, pss, NULL); OopClosure* copy_non_heap_cl = &only_copy_non_heap_cl; if (_g1h->collector_state()->during_initial_mark_pause()) { // We also need to mark copied objects. --- 5321,5333 ---- G1STWIsAliveClosure is_alive(_g1h); G1ParScanThreadState* pss = _pss[worker_id]; pss->set_ref_processor(NULL); ! G1ParScanExtRootClosure only_copy_non_heap_cl(_g1h, pss); ! G1ParScanAndMarkExtRootClosure copy_mark_non_heap_cl(_g1h, pss); OopClosure* copy_non_heap_cl = &only_copy_non_heap_cl; if (_g1h->collector_state()->during_initial_mark_pause()) { // We also need to mark copied objects.
*** 5422,5434 **** G1ParScanThreadState* pss = _pss[worker_id]; pss->set_ref_processor(NULL); assert(pss->queue_is_empty(), "both queue and overflow should be empty"); ! G1ParScanExtRootClosure only_copy_non_heap_cl(_g1h, pss, NULL); ! G1ParScanAndMarkExtRootClosure copy_mark_non_heap_cl(_g1h, pss, NULL); OopClosure* copy_non_heap_cl = &only_copy_non_heap_cl; if (_g1h->collector_state()->during_initial_mark_pause()) { // We also need to mark copied objects. --- 5421,5433 ---- G1ParScanThreadState* pss = _pss[worker_id]; pss->set_ref_processor(NULL); assert(pss->queue_is_empty(), "both queue and overflow should be empty"); ! G1ParScanExtRootClosure only_copy_non_heap_cl(_g1h, pss); ! G1ParScanAndMarkExtRootClosure copy_mark_non_heap_cl(_g1h, pss); OopClosure* copy_non_heap_cl = &only_copy_non_heap_cl; if (_g1h->collector_state()->during_initial_mark_pause()) { // We also need to mark copied objects.
*** 5532,5544 **** // We do not embed a reference processor in the copying/scanning // closures while we're actually processing the discovered // reference objects. ! G1ParScanExtRootClosure only_copy_non_heap_cl(this, pss, NULL); ! G1ParScanAndMarkExtRootClosure copy_mark_non_heap_cl(this, pss, NULL); OopClosure* copy_non_heap_cl = &only_copy_non_heap_cl; if (collector_state()->during_initial_mark_pause()) { // We also need to mark copied objects. --- 5531,5543 ---- // We do not embed a reference processor in the copying/scanning // closures while we're actually processing the discovered // reference objects. ! G1ParScanExtRootClosure only_copy_non_heap_cl(this, pss); ! G1ParScanAndMarkExtRootClosure copy_mark_non_heap_cl(this, pss); OopClosure* copy_non_heap_cl = &only_copy_non_heap_cl; if (collector_state()->during_initial_mark_pause()) { // We also need to mark copied objects.
< prev index next >