src/hotspot/share/gc/g1/g1OopClosures.hpp
changeset 49644 50a01910e00a
parent 49607 acffe6ff3ae7
child 49806 2d62570a615c
equal deleted inserted replaced
49643:a3453bbd5418 49644:50a01910e00a
   149   virtual void do_oop(oop* p)       { do_oop_work(p); }
   149   virtual void do_oop(oop* p)       { do_oop_work(p); }
   150   virtual void do_oop(narrowOop* p) { do_oop_work(p); }
   150   virtual void do_oop(narrowOop* p) { do_oop_work(p); }
   151 };
   151 };
   152 
   152 
   153 class G1CLDScanClosure : public CLDClosure {
   153 class G1CLDScanClosure : public CLDClosure {
   154  G1ParCopyHelper* _closure;
   154   G1ParCopyHelper* _closure;
   155  bool             _process_only_dirty;
   155   bool             _process_only_dirty;
   156  bool             _must_claim;
   156   bool             _must_claim;
   157  int              _count;
   157   int              _count;
   158  public:
   158 public:
   159   G1CLDScanClosure(G1ParCopyHelper* closure,
   159   G1CLDScanClosure(G1ParCopyHelper* closure,
   160                    bool process_only_dirty, bool must_claim)
   160                    bool process_only_dirty, bool must_claim)
   161       : _process_only_dirty(process_only_dirty), _must_claim(must_claim), _closure(closure), _count(0) {}
   161       : _process_only_dirty(process_only_dirty), _must_claim(must_claim), _closure(closure), _count(0) {}
   162   void do_cld(ClassLoaderData* cld);
   162   void do_cld(ClassLoaderData* cld);
   163 };
   163 };
   164 
   164 
   165 // Closure for iterating over object fields during concurrent marking
   165 // Closure for iterating over object fields during concurrent marking
   166 class G1CMOopClosure : public MetadataAwareOopClosure {
   166 class G1CMOopClosure : public MetadataAwareOopClosure {
   167 protected:
       
   168   G1ConcurrentMark*  _cm;
       
   169 private:
       
   170   G1CollectedHeap*   _g1h;
   167   G1CollectedHeap*   _g1h;
   171   G1CMTask*          _task;
   168   G1CMTask*          _task;
   172 public:
   169 public:
   173   G1CMOopClosure(G1CollectedHeap* g1h, G1ConcurrentMark* cm, G1CMTask* task);
   170   G1CMOopClosure(G1CollectedHeap* g1h,G1CMTask* task);
   174   template <class T> void do_oop_nv(T* p);
   171   template <class T> void do_oop_nv(T* p);
   175   virtual void do_oop(      oop* p) { do_oop_nv(p); }
   172   virtual void do_oop(      oop* p) { do_oop_nv(p); }
   176   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
   173   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
   177 };
   174 };
   178 
   175