< prev index next >

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

Print this page
rev 49944 : imported patch 8201492-properly-implement-non-contiguous-reference-processing

*** 105,121 **** // The G1 STW is alive closure. // An instance is embedded into the G1CH and used as the // (optional) _is_alive_non_header closure in the STW // reference processor. It is also extensively used during // reference processing during STW evacuation pauses. ! class G1STWIsAliveClosure: public BoolObjectClosure { G1CollectedHeap* _g1h; public: G1STWIsAliveClosure(G1CollectedHeap* g1h) : _g1h(g1h) {} bool do_object_b(oop p); }; class G1RegionMappingChangedListener : public G1MappingChangedListener { private: void reset_from_card_cache(uint start_idx, size_t num_regions); public: virtual void on_commit(uint start_idx, size_t num_regions, bool zero_filled); --- 105,128 ---- // The G1 STW is alive closure. // An instance is embedded into the G1CH and used as the // (optional) _is_alive_non_header closure in the STW // reference processor. It is also extensively used during // reference processing during STW evacuation pauses. ! class G1STWIsAliveClosure : public BoolObjectClosure { G1CollectedHeap* _g1h; public: G1STWIsAliveClosure(G1CollectedHeap* g1h) : _g1h(g1h) {} bool do_object_b(oop p); }; + class G1STWSubjectToDiscoveryClosure : public BoolObjectClosure { + G1CollectedHeap* _g1h; + public: + G1STWSubjectToDiscoveryClosure(G1CollectedHeap* g1h) : _g1h(g1h) {} + bool do_object_b(oop p); + }; + class G1RegionMappingChangedListener : public G1MappingChangedListener { private: void reset_from_card_cache(uint start_idx, size_t num_regions); public: virtual void on_commit(uint start_idx, size_t num_regions, bool zero_filled);
*** 500,512 **** // to support an allocation of the given "word_size". If // successful, perform the allocation and return the address of the // allocated block, or else "NULL". HeapWord* expand_and_allocate(size_t word_size); - // Preserve any referents discovered by concurrent marking that have not yet been - // copied by the STW pause. - void preserve_cm_referents(G1ParScanThreadStateSet* per_thread_states); // Process any reference objects discovered during // an incremental evacuation pause. void process_discovered_references(G1ParScanThreadStateSet* per_thread_states); // Enqueue any remaining discovered references --- 507,516 ----
*** 891,900 **** --- 895,906 ---- // Supplying a value for the _is_alive_non_header field is // optional but doing so prevents unnecessary additions to // the discovered lists during reference discovery. G1STWIsAliveClosure _is_alive_closure_stw; + G1STWSubjectToDiscoveryClosure _is_subject_to_discovery_stw; + // The (concurrent marking) reference processor... ReferenceProcessor* _ref_processor_cm; // Instance of the concurrent mark is_alive closure for embedding // into the Concurrent Marking reference processor as the
*** 902,911 **** --- 908,918 ---- // _is_alive_non_header field is optional but doing so prevents // unnecessary additions to the discovered lists during reference // discovery. G1CMIsAliveClosure _is_alive_closure_cm; + G1CMSubjectToDiscoveryClosure _is_subject_to_discovery_cm; public: RefToScanQueue *task_queue(uint i) const; uint num_task_queues() const;
< prev index next >