< 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 >