< prev index next >

src/hotspot/share/gc/g1/g1ParScanThreadState.hpp

Print this page
rev 52675 : 8213890: Implementation of JEP 344: Abortable Mixed Collections for G1
Reviewed-by:
Contributed-by: erik.helin@oracle.com, stefan.johansson@oracle.com
rev 52676 : imported patch AMGC-impl
rev 52681 : [mq]: AMGC-kbar-rev1
rev 52682 : [mq]: AMGC-kbar-rev1b

*** 35,44 **** --- 35,45 ---- #include "gc/shared/ageTable.hpp" #include "memory/allocation.hpp" #include "oops/oop.hpp" #include "utilities/ticks.hpp" + class G1OopStarChunkedList; class G1PLABAllocator; class G1EvacuationRootClosures; class HeapRegion; class outputStream;
*** 85,96 **** assert(_dest[original.value()].is_valid_gen(), "Dest state is invalid: " CSETSTATE_FORMAT, _dest[original.value()].value()); return _dest[original.value()]; } public: ! G1ParScanThreadState(G1CollectedHeap* g1h, uint worker_id, size_t young_cset_length); virtual ~G1ParScanThreadState(); void set_ref_discoverer(ReferenceDiscoverer* rd) { _scanner.set_ref_discoverer(rd); } #ifdef ASSERT --- 86,103 ---- assert(_dest[original.value()].is_valid_gen(), "Dest state is invalid: " CSETSTATE_FORMAT, _dest[original.value()].value()); return _dest[original.value()]; } + size_t _num_optional_regions; + G1OopStarChunkedList* _oops_into_optional_regions; + public: ! G1ParScanThreadState(G1CollectedHeap* g1h, ! uint worker_id, ! size_t young_cset_length, ! size_t optional_cset_length); virtual ~G1ParScanThreadState(); void set_ref_discoverer(ReferenceDiscoverer* rd) { _scanner.set_ref_discoverer(rd); } #ifdef ASSERT
*** 204,228 **** inline void steal_and_trim_queue(RefToScanQueueSet *task_queues); // An attempt to evacuate "obj" has failed; take necessary steps. oop handle_evacuation_failure_par(oop obj, markOop m); }; class G1ParScanThreadStateSet : public StackObj { G1CollectedHeap* _g1h; G1ParScanThreadState** _states; size_t* _surviving_young_words_total; size_t _young_cset_length; uint _n_workers; bool _flushed; public: ! G1ParScanThreadStateSet(G1CollectedHeap* g1h, uint n_workers, size_t young_cset_length); ~G1ParScanThreadStateSet(); void flush(); G1ParScanThreadState* state_for_worker(uint worker_id); const size_t* surviving_young_words() const; --- 211,247 ---- inline void steal_and_trim_queue(RefToScanQueueSet *task_queues); // An attempt to evacuate "obj" has failed; take necessary steps. oop handle_evacuation_failure_par(oop obj, markOop m); + + template <typename T> + inline void remember_root_into_optional_region(T* p); + template <typename T> + inline void remember_reference_into_optional_region(T* p); + + inline G1OopStarChunkedList* oops_into_optional_region(const HeapRegion* hr); }; class G1ParScanThreadStateSet : public StackObj { G1CollectedHeap* _g1h; G1ParScanThreadState** _states; size_t* _surviving_young_words_total; size_t _young_cset_length; + size_t _optional_cset_length; uint _n_workers; bool _flushed; public: ! G1ParScanThreadStateSet(G1CollectedHeap* g1h, ! uint n_workers, ! size_t young_cset_length, ! size_t optional_cset_length); ~G1ParScanThreadStateSet(); void flush(); + void record_unused_optional_region(HeapRegion* hr); G1ParScanThreadState* state_for_worker(uint worker_id); const size_t* surviving_young_words() const;
< prev index next >