< prev index next >

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

Print this page
rev 7555 : [mq]: propagate_scanrs_closure


 222   virtual void do_oop(narrowOop* p)  { do_oop_nv(p); }
 223 };
 224 
 225 // A closure which uses a triggering closure to determine
 226 // whether to apply an oop closure.
 227 
 228 class G1InvokeIfNotTriggeredClosure: public ExtendedOopClosure {
 229   G1TriggerClosure* _trigger_cl;
 230   OopClosure* _oop_cl;
 231 public:
 232   G1InvokeIfNotTriggeredClosure(G1TriggerClosure* t, OopClosure* oc);
 233   template <class T> void do_oop_nv(T* p);
 234   virtual void do_oop(oop* p)        { do_oop_nv(p); }
 235   virtual void do_oop(narrowOop* p)  { do_oop_nv(p); }
 236 };
 237 
 238 class G1UpdateRSOrPushRefOopClosure: public ExtendedOopClosure {
 239   G1CollectedHeap* _g1;
 240   G1RemSet* _g1_rem_set;
 241   HeapRegion* _from;
 242   OopsInHeapRegionClosure* _push_ref_cl;
 243   bool _record_refs_into_cset;
 244   uint _worker_i;
 245 
 246 public:
 247   G1UpdateRSOrPushRefOopClosure(G1CollectedHeap* g1h,
 248                                 G1RemSet* rs,
 249                                 OopsInHeapRegionClosure* push_ref_cl,
 250                                 bool record_refs_into_cset,
 251                                 uint worker_i = 0);
 252 
 253   void set_from(HeapRegion* from) {
 254     assert(from != NULL, "from region must be non-NULL");
 255     _from = from;
 256   }
 257 
 258   bool self_forwarded(oop obj) {
 259     bool result = (obj->is_forwarded() && (obj->forwardee()== obj));
 260     return result;
 261   }
 262 
 263   bool apply_to_weak_ref_discovered_field() { return true; }
 264 
 265   template <class T> void do_oop_nv(T* p);
 266   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 267   virtual void do_oop(oop* p)       { do_oop_nv(p); }
 268 };
 269 


 222   virtual void do_oop(narrowOop* p)  { do_oop_nv(p); }
 223 };
 224 
 225 // A closure which uses a triggering closure to determine
 226 // whether to apply an oop closure.
 227 
 228 class G1InvokeIfNotTriggeredClosure: public ExtendedOopClosure {
 229   G1TriggerClosure* _trigger_cl;
 230   OopClosure* _oop_cl;
 231 public:
 232   G1InvokeIfNotTriggeredClosure(G1TriggerClosure* t, OopClosure* oc);
 233   template <class T> void do_oop_nv(T* p);
 234   virtual void do_oop(oop* p)        { do_oop_nv(p); }
 235   virtual void do_oop(narrowOop* p)  { do_oop_nv(p); }
 236 };
 237 
 238 class G1UpdateRSOrPushRefOopClosure: public ExtendedOopClosure {
 239   G1CollectedHeap* _g1;
 240   G1RemSet* _g1_rem_set;
 241   HeapRegion* _from;
 242   G1ParPushHeapRSClosure* _push_ref_cl;
 243   bool _record_refs_into_cset;
 244   uint _worker_i;
 245 
 246 public:
 247   G1UpdateRSOrPushRefOopClosure(G1CollectedHeap* g1h,
 248                                 G1RemSet* rs,
 249                                 G1ParPushHeapRSClosure* push_ref_cl,
 250                                 bool record_refs_into_cset,
 251                                 uint worker_i = 0);
 252 
 253   void set_from(HeapRegion* from) {
 254     assert(from != NULL, "from region must be non-NULL");
 255     _from = from;
 256   }
 257 
 258   bool self_forwarded(oop obj) {
 259     bool result = (obj->is_forwarded() && (obj->forwardee()== obj));
 260     return result;
 261   }
 262 
 263   bool apply_to_weak_ref_discovered_field() { return true; }
 264 
 265   template <class T> void do_oop_nv(T* p);
 266   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 267   virtual void do_oop(oop* p)       { do_oop_nv(p); }
 268 };
 269 
< prev index next >