< prev index next >

src/hotspot/share/gc/parallel/psScavenge.cpp

Print this page

        

*** 42,52 **** #include "gc/shared/gcTimer.hpp" #include "gc/shared/gcTrace.hpp" #include "gc/shared/gcTraceTime.inline.hpp" #include "gc/shared/isGCActiveMark.hpp" #include "gc/shared/oopStorage.inline.hpp" ! #include "gc/shared/oopStorageSet.hpp" #include "gc/shared/referencePolicy.hpp" #include "gc/shared/referenceProcessor.hpp" #include "gc/shared/referenceProcessorPhaseTimes.hpp" #include "gc/shared/scavengableNMethods.hpp" #include "gc/shared/spaceDecorator.inline.hpp" --- 42,53 ---- #include "gc/shared/gcTimer.hpp" #include "gc/shared/gcTrace.hpp" #include "gc/shared/gcTraceTime.inline.hpp" #include "gc/shared/isGCActiveMark.hpp" #include "gc/shared/oopStorage.inline.hpp" ! #include "gc/shared/oopStorageSetParState.inline.hpp" ! #include "gc/shared/oopStorageParState.inline.hpp" #include "gc/shared/referencePolicy.hpp" #include "gc/shared/referenceProcessor.hpp" #include "gc/shared/referenceProcessorPhaseTimes.hpp" #include "gc/shared/scavengableNMethods.hpp" #include "gc/shared/spaceDecorator.inline.hpp"
*** 94,115 **** switch (root_type) { case ParallelRootType::universe: Universe::oops_do(&roots_closure); break; - case ParallelRootType::jni_handles: - JNIHandles::oops_do(&roots_closure); - break; - case ParallelRootType::object_synchronizer: ObjectSynchronizer::oops_do(&roots_closure); break; - case ParallelRootType::vm_global: - OopStorageSet::vm_global()->oops_do(&roots_closure); - break; - case ParallelRootType::class_loader_data: { PSScavengeCLDClosure cld_closure(pm); ClassLoaderDataGraph::cld_do(&cld_closure); } --- 95,108 ----
*** 310,319 **** --- 303,313 ---- } }; class ScavengeRootsTask : public AbstractGangTask { StrongRootsScope _strong_roots_scope; // needed for Threads::possibly_parallel_threads_do + OopStorageSetStrongParState<false /* concurrent */, false /* is_const */> _oop_storage_strong_par_state; SequentialSubTasksDone _subtasks; PSOldGen* _old_gen; HeapWord* _gen_top; uint _active_workers; bool _is_empty;
*** 371,380 **** --- 365,382 ---- _subtasks.all_tasks_completed(); PSThreadRootsTaskClosure closure(worker_id); Threads::possibly_parallel_threads_do(true /*parallel */, &closure); + // Scavenge OopStorages + { + PSPromotionManager* pm = PSPromotionManager::gc_thread_promotion_manager(worker_id); + PSScavengeRootsClosure closure(pm); + _oop_storage_strong_par_state.oops_do(&closure); + // Do the real work + pm->drain_stacks(false); + } // If active_workers can exceed 1, add a steal_work(). // PSPromotionManager::drain_stacks_depth() does not fully drain its // stacks and expects a steal_work() to complete the draining if // ParallelGCThreads is > 1.
< prev index next >