# HG changeset patch # User ehelin # Date 1440745546 -7200 # Node ID f7abf3de78228c541acdd532d6a7de12ad05e1b2 # Parent 79b7d59ee282ec521bb4062ca1674f06ec248d2b 8134509: G1ParCopyClosure does not need a ReferenceProcessor Reviewed-by: stefank, mgerdin diff -r 79b7d59ee282 -r f7abf3de7822 src/share/vm/gc/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc/g1/g1CollectedHeap.cpp Thu Aug 27 16:28:05 2015 +0200 +++ b/src/share/vm/gc/g1/g1CollectedHeap.cpp Fri Aug 28 09:05:46 2015 +0200 @@ -4584,8 +4584,7 @@ bool only_young, bool claim) : _oop_closure(oop_closure), _oop_in_klass_closure(oop_closure->g1(), - oop_closure->pss(), - oop_closure->rp()), + oop_closure->pss()), _klass_in_cld_closure(&_oop_in_klass_closure, only_young), _claim(claim) { @@ -4614,18 +4613,18 @@ bool only_young = _g1h->collector_state()->gcs_are_young(); // Non-IM young GC. - G1ParCopyClosure scan_only_root_cl(_g1h, pss, rp); + G1ParCopyClosure scan_only_root_cl(_g1h, pss); G1CLDClosure 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 scan_mark_root_cl(_g1h, pss, rp); + G1ParCopyClosure scan_mark_root_cl(_g1h, pss); G1CLDClosure scan_mark_cld_cl(&scan_mark_root_cl, false, // Process all klasses. true); // Need to claim CLDs. // Weak roots closures. - G1ParCopyClosure scan_mark_weak_root_cl(_g1h, pss, rp); + G1ParCopyClosure scan_mark_weak_root_cl(_g1h, pss); G1CLDClosure scan_mark_weak_cld_cl(&scan_mark_weak_root_cl, false, // Process all klasses. true); // Need to claim CLDs. @@ -5324,9 +5323,9 @@ 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); + 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; @@ -5424,9 +5423,9 @@ 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); + 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; @@ -5534,9 +5533,9 @@ // 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); + 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; diff -r 79b7d59ee282 -r f7abf3de7822 src/share/vm/gc/g1/g1OopClosures.hpp --- a/src/share/vm/gc/g1/g1OopClosures.hpp Thu Aug 27 16:28:05 2015 +0200 +++ b/src/share/vm/gc/g1/g1OopClosures.hpp Fri Aug 28 09:05:46 2015 +0200 @@ -125,8 +125,7 @@ template void do_oop_work(T* p); public: - G1ParCopyClosure(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state, - ReferenceProcessor* rp) : + G1ParCopyClosure(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state) : G1ParCopyHelper(g1, par_scan_state) { assert(_ref_processor == NULL, "sanity"); } @@ -141,7 +140,6 @@ G1CollectedHeap* g1() { return _g1; }; G1ParScanThreadState* pss() { return _par_scan_state; } - ReferenceProcessor* rp() { return _ref_processor; }; }; typedef G1ParCopyClosure G1ParScanExtRootClosure;