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