< prev index next >

src/share/vm/gc/g1/g1OopClosures.hpp

Print this page
rev 12854 : 8138888: Remove ExtendedOopClosure::apply_to_weak_ref_discovered_field
Reviewed-by:

@@ -54,11 +54,12 @@
 
   G1ParClosureSuper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state);
   ~G1ParClosureSuper() { }
 
 public:
-  virtual bool apply_to_weak_ref_discovered_field() { return true; }
+  // This closure needs special handling for InstanceRefKlass.
+  virtual ReferenceIterationMode reference_iteration_mode() { return DO_DISCOVERED_AND_DISCOVERY; }
 };
 
 class G1ParPushHeapRSClosure : public G1ParClosureSuper {
 public:
   G1ParPushHeapRSClosure(G1CollectedHeap* g1,

@@ -187,12 +188,10 @@
   void set_from(HeapRegion* from) {
     assert(from != NULL, "from region must be non-NULL");
     _from = from;
   }
 
-  bool apply_to_weak_ref_discovered_field() { return true; }
-
   bool self_forwarded(oop obj) {
     markOop m = obj->mark();
     bool result = (m->is_marked() && ((oop)m->decode_pointer() == obj));
     return result;
   }

@@ -200,8 +199,11 @@
   bool has_refs_into_cset() const { return _has_refs_into_cset; }
 
   template <class T> inline void do_oop_nv(T* p);
   virtual inline void do_oop(narrowOop* p);
   virtual inline void do_oop(oop* 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
< prev index next >