--- old/src/hotspot/share/gc/g1/g1CollectedHeap.cpp 2020-08-05 21:29:25.825604296 +0800 +++ new/src/hotspot/share/gc/g1/g1CollectedHeap.cpp 2020-08-05 21:29:25.521604285 +0800 @@ -2300,6 +2300,30 @@ heap_region_iterate(&blk); } +class G1ParallelObjectIterator : public ParallelObjectIterator { +private: + G1CollectedHeap* _heap; + HeapRegionClaimer _claimer; + +public: + G1ParallelObjectIterator(uint thread_num) : + _heap(G1CollectedHeap::heap()), + _claimer(thread_num == 0 ? G1CollectedHeap::heap()->workers()->active_workers() : thread_num) {} + + virtual void object_iterate(ObjectClosure* cl, uint worker_id) { + _heap->object_iterate_parallel(cl, worker_id, &_claimer); + } +}; + +ParallelObjectIterator* G1CollectedHeap::parallel_object_iterator(uint thread_num) { + return new G1ParallelObjectIterator(thread_num); +} + +void G1CollectedHeap::object_iterate_parallel(ObjectClosure* cl, uint worker_id, HeapRegionClaimer* claimer) { + IterateObjectClosureRegionClosure blk(cl); + heap_region_par_iterate_from_worker_offset(&blk, claimer, worker_id); +} + void G1CollectedHeap::keep_alive(oop obj) { G1BarrierSet::enqueue(obj); } @@ -4919,27 +4943,3 @@ GrowableArray G1CollectedHeap::memory_pools() { return _g1mm->memory_pools(); } - -class G1ParallelObjectIterator : public ParallelObjectIterator { -private: - G1CollectedHeap* _heap; - HeapRegionClaimer _claimer; - -public: - G1ParallelObjectIterator(uint thread_num) : - _heap(G1CollectedHeap::heap()), - _claimer(thread_num == 0 ? G1CollectedHeap::heap()->workers()->active_workers() : thread_num) {} - - virtual void object_iterate(ObjectClosure* cl, uint worker_id) { - _heap->object_iterate_parallel(cl, worker_id, &_claimer); - } -}; - -ParallelObjectIterator* G1CollectedHeap::parallel_object_iterator(uint thread_num) { - return new G1ParallelObjectIterator(thread_num); -} - -void G1CollectedHeap::object_iterate_parallel(ObjectClosure* cl, uint worker_id, HeapRegionClaimer* claimer) { - IterateObjectClosureRegionClosure blk(cl); - heap_region_par_iterate_from_worker_offset(&blk, claimer, worker_id); -}