src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp

Print this page
rev 7056 : [mq]: 8058298

*** 1596,1618 **** class ParKnownGarbageTask: public AbstractGangTask { CollectionSetChooser* _hrSorted; uint _chunk_size; G1CollectedHeap* _g1; public: ! ParKnownGarbageTask(CollectionSetChooser* hrSorted, uint chunk_size) : AbstractGangTask("ParKnownGarbageTask"), _hrSorted(hrSorted), _chunk_size(chunk_size), ! _g1(G1CollectedHeap::heap()) { } void work(uint worker_id) { ParKnownGarbageHRClosure parKnownGarbageCl(_hrSorted, _chunk_size); ! ! // Back to zero for the claim value. ! _g1->heap_region_par_iterate_chunked(&parKnownGarbageCl, worker_id, ! _g1->workers()->active_workers(), ! HeapRegion::InitialClaimValue); } }; void G1CollectorPolicy::record_concurrent_mark_cleanup_end(int no_of_gc_threads) { --- 1596,1616 ---- class ParKnownGarbageTask: public AbstractGangTask { CollectionSetChooser* _hrSorted; uint _chunk_size; G1CollectedHeap* _g1; + HeapRegionClaimer _hrclaimer; + public: ! ParKnownGarbageTask(CollectionSetChooser* hrSorted, uint chunk_size, uint n_workers) : AbstractGangTask("ParKnownGarbageTask"), _hrSorted(hrSorted), _chunk_size(chunk_size), ! _g1(G1CollectedHeap::heap()), _hrclaimer(n_workers) {} void work(uint worker_id) { ParKnownGarbageHRClosure parKnownGarbageCl(_hrSorted, _chunk_size); ! _g1->heap_region_par_iterate(&parKnownGarbageCl, worker_id, &_hrclaimer); } }; void G1CollectorPolicy::record_concurrent_mark_cleanup_end(int no_of_gc_threads) {
*** 1639,1654 **** MAX2(region_num / (uint) (ParallelGCThreads * OverpartitionFactor), MinWorkUnit); } _collectionSetChooser->prepare_for_par_region_addition(_g1->num_regions(), WorkUnit); ! ParKnownGarbageTask parKnownGarbageTask(_collectionSetChooser, ! (int) WorkUnit); _g1->workers()->run_task(&parKnownGarbageTask); - - assert(_g1->check_heap_region_claim_values(HeapRegion::InitialClaimValue), - "sanity check"); } else { KnownGarbageClosure knownGarbagecl(_collectionSetChooser); _g1->heap_region_iterate(&knownGarbagecl); } --- 1637,1648 ---- MAX2(region_num / (uint) (ParallelGCThreads * OverpartitionFactor), MinWorkUnit); } _collectionSetChooser->prepare_for_par_region_addition(_g1->num_regions(), WorkUnit); ! ParKnownGarbageTask parKnownGarbageTask(_collectionSetChooser, WorkUnit, (uint) no_of_gc_threads); _g1->workers()->run_task(&parKnownGarbageTask); } else { KnownGarbageClosure knownGarbagecl(_collectionSetChooser); _g1->heap_region_iterate(&knownGarbagecl); }