< prev index next >

src/share/vm/gc_implementation/g1/g1EvacFailure.hpp

Print this page
rev 7182 : imported patch 8058298
rev 7184 : imported patch rev2
rev 7185 : [mq]: rev3

*** 175,203 **** class RemoveSelfForwardPtrHRClosure: public HeapRegionClosure { G1CollectedHeap* _g1h; ConcurrentMark* _cm; uint _worker_id; DirtyCardQueue _dcq; UpdateRSetDeferred _update_rset_cl; public: RemoveSelfForwardPtrHRClosure(G1CollectedHeap* g1h, ! uint worker_id) : _g1h(g1h), _dcq(&g1h->dirty_card_queue_set()), _update_rset_cl(g1h, &_dcq), ! _worker_id(worker_id), _cm(_g1h->concurrent_mark()) { } bool doHeapRegion(HeapRegion *hr) { bool during_initial_mark = _g1h->g1_policy()->during_initial_mark_pause(); bool during_conc_mark = _g1h->mark_in_progress(); assert(!hr->is_humongous(), "sanity"); assert(hr->in_collection_set(), "bad CS"); ! if (hr->claimHeapRegion(HeapRegion::ParEvacFailureClaimValue)) { if (hr->evacuation_failed()) { RemoveSelfForwardPtrObjClosure rspc(_g1h, _cm, hr, &_update_rset_cl, during_initial_mark, during_conc_mark, _worker_id); --- 175,205 ---- class RemoveSelfForwardPtrHRClosure: public HeapRegionClosure { G1CollectedHeap* _g1h; ConcurrentMark* _cm; uint _worker_id; + HeapRegionClaimer* _hrclaimer; DirtyCardQueue _dcq; UpdateRSetDeferred _update_rset_cl; public: RemoveSelfForwardPtrHRClosure(G1CollectedHeap* g1h, ! uint worker_id, ! HeapRegionClaimer* hrclaimer) : _g1h(g1h), _dcq(&g1h->dirty_card_queue_set()), _update_rset_cl(g1h, &_dcq), ! _worker_id(worker_id), _cm(_g1h->concurrent_mark()), _hrclaimer(hrclaimer) { } bool doHeapRegion(HeapRegion *hr) { bool during_initial_mark = _g1h->g1_policy()->during_initial_mark_pause(); bool during_conc_mark = _g1h->mark_in_progress(); assert(!hr->is_humongous(), "sanity"); assert(hr->in_collection_set(), "bad CS"); ! if (_hrclaimer->claim_region(hr->hrm_index())) { if (hr->evacuation_failed()) { RemoveSelfForwardPtrObjClosure rspc(_g1h, _cm, hr, &_update_rset_cl, during_initial_mark, during_conc_mark, _worker_id);
*** 231,248 **** }; class G1ParRemoveSelfForwardPtrsTask: public AbstractGangTask { protected: G1CollectedHeap* _g1h; public: G1ParRemoveSelfForwardPtrsTask(G1CollectedHeap* g1h) : ! AbstractGangTask("G1 Remove Self-forwarding Pointers"), ! _g1h(g1h) { } void work(uint worker_id) { ! RemoveSelfForwardPtrHRClosure rsfp_cl(_g1h, worker_id); HeapRegion* hr = _g1h->start_cset_region_for_worker(worker_id); _g1h->collection_set_iterate_from(hr, &rsfp_cl); } }; --- 233,251 ---- }; class G1ParRemoveSelfForwardPtrsTask: public AbstractGangTask { protected: G1CollectedHeap* _g1h; + HeapRegionClaimer _hrclaimer; public: G1ParRemoveSelfForwardPtrsTask(G1CollectedHeap* g1h) : ! AbstractGangTask("G1 Remove Self-forwarding Pointers"), _g1h(g1h), ! _hrclaimer(g1h->workers()->active_workers()) {} void work(uint worker_id) { ! RemoveSelfForwardPtrHRClosure rsfp_cl(_g1h, worker_id, &_hrclaimer); HeapRegion* hr = _g1h->start_cset_region_for_worker(worker_id); _g1h->collection_set_iterate_from(hr, &rsfp_cl); } };
< prev index next >