< prev index next >
src/hotspot/share/gc/g1/g1OopClosures.hpp
Print this page
rev 51626 : imported patch 8209843-too-much-reference-processing
*** 52,63 ****
inline void prefetch_and_push(T* p, oop const obj);
template <class T>
inline void handle_non_cset_obj_common(InCSetState const state, T* p, oop const obj);
public:
! // This closure needs special handling for InstanceRefKlass.
! virtual ReferenceIterationMode reference_iteration_mode() { return DO_DISCOVERED_AND_DISCOVERY; }
void set_region(HeapRegion* from) { _from = from; }
inline void trim_queue_partially();
};
--- 52,63 ----
inline void prefetch_and_push(T* p, oop const obj);
template <class T>
inline void handle_non_cset_obj_common(InCSetState const state, T* p, oop const obj);
public:
! virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
!
void set_region(HeapRegion* from) { _from = from; }
inline void trim_queue_partially();
};
*** 96,105 ****
--- 96,108 ----
template <class T> void do_oop_work(T* p);
virtual void do_oop(oop* p) { do_oop_work(p); }
virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+ // We need to do reference discovery while processing evacuated objects.
+ virtual ReferenceIterationMode reference_iteration_mode() { return DO_DISCOVERED_AND_DISCOVERY; }
+
void set_ref_discoverer(ReferenceDiscoverer* rd) {
set_ref_discoverer_internal(rd);
}
};
*** 199,210 ****
G1ConcurrentRefineOopClosure(G1CollectedHeap* g1h, uint worker_i) :
_g1h(g1h),
_worker_i(worker_i) {
}
! // This closure needs special handling for InstanceRefKlass.
! virtual ReferenceIterationMode reference_iteration_mode() { return DO_DISCOVERED_AND_DISCOVERY; }
template <class T> void do_oop_work(T* p);
virtual void do_oop(narrowOop* p) { do_oop_work(p); }
virtual void do_oop(oop* p) { do_oop_work(p); }
};
--- 202,212 ----
G1ConcurrentRefineOopClosure(G1CollectedHeap* g1h, uint worker_i) :
_g1h(g1h),
_worker_i(worker_i) {
}
! virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
template <class T> void do_oop_work(T* p);
virtual void do_oop(narrowOop* p) { do_oop_work(p); }
virtual void do_oop(oop* p) { do_oop_work(p); }
};
*** 217,226 ****
}
template <class T> void do_oop_work(T* p);
virtual void do_oop(oop* p) { do_oop_work(p); }
virtual void do_oop(narrowOop* p) { do_oop_work(p); }
! // This closure needs special handling for InstanceRefKlass.
! virtual ReferenceIterationMode reference_iteration_mode() { return DO_DISCOVERED_AND_DISCOVERY; }
};
#endif // SHARE_VM_GC_G1_G1OOPCLOSURES_HPP
--- 219,228 ----
}
template <class T> void do_oop_work(T* p);
virtual void do_oop(oop* p) { do_oop_work(p); }
virtual void do_oop(narrowOop* p) { do_oop_work(p); }
!
! virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
};
#endif // SHARE_VM_GC_G1_G1OOPCLOSURES_HPP
< prev index next >