< prev index next >

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

Print this page
rev 12941 : [mq]: 8177707-specialize-refine-card
rev 12943 : imported patch 8177044-remove-scan-top


 182 
 183   bool apply_to_weak_ref_discovered_field() { return true; }
 184 
 185   template <class T> void do_oop_nv(T* p);
 186   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 187   virtual void do_oop(oop* p) { do_oop_nv(p); }
 188 };
 189 
 190 class G1UpdateRSOrPushRefOopClosure: public ExtendedOopClosure {
 191   G1CollectedHeap* _g1;
 192   HeapRegion* _from;
 193   G1ParPushHeapRSClosure* _push_ref_cl;
 194   bool _record_refs_into_cset;
 195   uint _worker_i;
 196   bool _has_refs_into_cset;
 197 
 198 public:
 199   G1UpdateRSOrPushRefOopClosure(G1CollectedHeap* g1h,
 200                                 G1ParPushHeapRSClosure* push_ref_cl,
 201                                 bool record_refs_into_cset,
 202                                 uint worker_i = 0);
 203 
 204   void set_from(HeapRegion* from) {
 205     assert(from != NULL, "from region must be non-NULL");
 206     _from = from;
 207   }
 208 
 209   bool apply_to_weak_ref_discovered_field() { return true; }
 210 
 211   bool self_forwarded(oop obj) {
 212     markOop m = obj->mark();
 213     bool result = (m->is_marked() && ((oop)m->decode_pointer() == obj));
 214     return result;
 215   }
 216 
 217   bool has_refs_into_cset() const { return _has_refs_into_cset; }
 218 
 219   template <class T> inline void do_oop_nv(T* p);
 220   virtual inline void do_oop(narrowOop* p);
 221   virtual inline void do_oop(oop* p);
 222 };


 182 
 183   bool apply_to_weak_ref_discovered_field() { return true; }
 184 
 185   template <class T> void do_oop_nv(T* p);
 186   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 187   virtual void do_oop(oop* p) { do_oop_nv(p); }
 188 };
 189 
 190 class G1UpdateRSOrPushRefOopClosure: public ExtendedOopClosure {
 191   G1CollectedHeap* _g1;
 192   HeapRegion* _from;
 193   G1ParPushHeapRSClosure* _push_ref_cl;
 194   bool _record_refs_into_cset;
 195   uint _worker_i;
 196   bool _has_refs_into_cset;
 197 
 198 public:
 199   G1UpdateRSOrPushRefOopClosure(G1CollectedHeap* g1h,
 200                                 G1ParPushHeapRSClosure* push_ref_cl,
 201                                 bool record_refs_into_cset,
 202                                 uint worker_i);
 203 
 204   void set_from(HeapRegion* from) {
 205     assert(from != NULL, "from region must be non-NULL");
 206     _from = from;
 207   }
 208 
 209   bool apply_to_weak_ref_discovered_field() { return true; }
 210 
 211   bool self_forwarded(oop obj) {
 212     markOop m = obj->mark();
 213     bool result = (m->is_marked() && ((oop)m->decode_pointer() == obj));
 214     return result;
 215   }
 216 
 217   bool has_refs_into_cset() const { return _has_refs_into_cset; }
 218 
 219   template <class T> inline void do_oop_nv(T* p);
 220   virtual inline void do_oop(narrowOop* p);
 221   virtual inline void do_oop(oop* p);
 222 };
< prev index next >