< prev index next >

src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp

Print this page

        

*** 51,60 **** --- 51,61 ---- #include "memory/genOopClosures.inline.hpp" #include "memory/iterator.inline.hpp" #include "memory/padded.hpp" #include "memory/referencePolicy.hpp" #include "memory/resourceArea.hpp" + #include "memory/strongRootsScope.hpp" #include "memory/tenuredGeneration.hpp" #include "oops/oop.inline.hpp" #include "prims/jvmtiExport.hpp" #include "runtime/atomic.inline.hpp" #include "runtime/globals_extension.hpp"
*** 3069,3082 **** int n_workers = workers->active_workers(); CMSParInitialMarkTask tsk(this, n_workers); gch->set_par_threads(n_workers); initialize_sequential_subtasks_for_young_gen_rescan(n_workers); if (n_workers > 1) { ! GenCollectedHeap::StrongRootsScope srs; workers->run_task(&tsk); } else { ! GenCollectedHeap::StrongRootsScope srs; tsk.work(0); } gch->set_par_threads(0); } else { // The serial version. --- 3070,3083 ---- int n_workers = workers->active_workers(); CMSParInitialMarkTask tsk(this, n_workers); gch->set_par_threads(n_workers); initialize_sequential_subtasks_for_young_gen_rescan(n_workers); if (n_workers > 1) { ! StrongRootsScope srs; workers->run_task(&tsk); } else { ! StrongRootsScope srs; tsk.work(0); } gch->set_par_threads(0); } else { // The serial version.
*** 5167,5181 **** if (n_workers > 1) { // Make refs discovery MT-safe, if it isn't already: it may not // necessarily be so, since it's possible that we are doing // ST marking. ReferenceProcessorMTDiscoveryMutator mt(ref_processor(), true); ! GenCollectedHeap::StrongRootsScope srs; workers->run_task(&tsk); } else { ReferenceProcessorMTDiscoveryMutator mt(ref_processor(), false); ! GenCollectedHeap::StrongRootsScope srs; tsk.work(0); } gch->set_par_threads(0); // 0 ==> non-parallel. // restore, single-threaded for now, any preserved marks --- 5168,5182 ---- if (n_workers > 1) { // Make refs discovery MT-safe, if it isn't already: it may not // necessarily be so, since it's possible that we are doing // ST marking. ReferenceProcessorMTDiscoveryMutator mt(ref_processor(), true); ! StrongRootsScope srs; workers->run_task(&tsk); } else { ReferenceProcessorMTDiscoveryMutator mt(ref_processor(), false); ! StrongRootsScope srs; tsk.work(0); } gch->set_par_threads(0); // 0 ==> non-parallel. // restore, single-threaded for now, any preserved marks
*** 5239,5249 **** GCTraceTime t("root rescan", PrintGCDetails, false, _gc_timer_cm, _gc_tracer_cm->gc_id()); verify_work_stacks_empty(); gch->rem_set()->prepare_for_younger_refs_iterate(false); // Not parallel. ! GenCollectedHeap::StrongRootsScope srs; gch->gen_process_roots(_cmsGen->level(), true, // younger gens as roots false, // use the local StrongRootsScope GenCollectedHeap::ScanningOption(roots_scanning_options()), --- 5240,5250 ---- GCTraceTime t("root rescan", PrintGCDetails, false, _gc_timer_cm, _gc_tracer_cm->gc_id()); verify_work_stacks_empty(); gch->rem_set()->prepare_for_younger_refs_iterate(false); // Not parallel. ! StrongRootsScope srs; gch->gen_process_roots(_cmsGen->level(), true, // younger gens as roots false, // use the local StrongRootsScope GenCollectedHeap::ScanningOption(roots_scanning_options()),
< prev index next >