< prev index next >

src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp

Print this page
rev 49758 : imported patch 8201492-properly-implement-non-contiguous-reference-processing

*** 287,297 **** void CMSCollector::ref_processor_init() { if (_ref_processor == NULL) { // Allocate and initialize a reference processor _ref_processor = ! new ReferenceProcessor(_span, // span (ParallelGCThreads > 1) && ParallelRefProcEnabled, // mt processing ParallelGCThreads, // mt processing degree _cmsGen->refs_discovery_is_mt(), // mt discovery MAX2(ConcGCThreads, ParallelGCThreads), // mt discovery degree _cmsGen->refs_discovery_is_atomic(), // discovery is not atomic --- 287,297 ---- void CMSCollector::ref_processor_init() { if (_ref_processor == NULL) { // Allocate and initialize a reference processor _ref_processor = ! new SpanReferenceProcessor(_span, // span (ParallelGCThreads > 1) && ParallelRefProcEnabled, // mt processing ParallelGCThreads, // mt processing degree _cmsGen->refs_discovery_is_mt(), // mt discovery MAX2(ConcGCThreads, ParallelGCThreads), // mt discovery degree _cmsGen->refs_discovery_is_atomic(), // discovery is not atomic
*** 3741,3760 **** _abort_preclean = true; } } } - size_t CMSCollector::preclean_work(bool clean_refs, bool clean_survivor) { assert(_collectorState == Precleaning || _collectorState == AbortablePreclean, "incorrect state"); ResourceMark rm; HandleMark hm; // Precleaning is currently not MT but the reference processor // may be set for MT. Disable it temporarily here. ! ReferenceProcessor* rp = ref_processor(); ReferenceProcessorMTDiscoveryMutator rp_mut_discovery(rp, false); // Do one pass of scrubbing the discovered reference lists // to remove any reference objects with strongly-reachable // referents. --- 3741,3759 ---- _abort_preclean = true; } } } size_t CMSCollector::preclean_work(bool clean_refs, bool clean_survivor) { assert(_collectorState == Precleaning || _collectorState == AbortablePreclean, "incorrect state"); ResourceMark rm; HandleMark hm; // Precleaning is currently not MT but the reference processor // may be set for MT. Disable it temporarily here. ! SpanReferenceProcessor* rp = ref_processor(); ReferenceProcessorMTDiscoveryMutator rp_mut_discovery(rp, false); // Do one pass of scrubbing the discovered reference lists // to remove any reference objects with strongly-reachable // referents.
*** 5170,5180 **** void CMSCollector::refProcessingWork() { ResourceMark rm; HandleMark hm; ! ReferenceProcessor* rp = ref_processor(); assert(rp->span().equals(_span), "Spans should be equal"); assert(!rp->enqueuing_is_done(), "Enqueuing should not be complete"); // Process weak references. rp->setup_policy(false); verify_work_stacks_empty(); --- 5169,5179 ---- void CMSCollector::refProcessingWork() { ResourceMark rm; HandleMark hm; ! SpanReferenceProcessor* rp = ref_processor(); assert(rp->span().equals(_span), "Spans should be equal"); assert(!rp->enqueuing_is_done(), "Enqueuing should not be complete"); // Process weak references. rp->setup_policy(false); verify_work_stacks_empty();
< prev index next >