< prev index next >

src/share/vm/gc/shenandoah/shenandoahOopClosures.hpp

Print this page
rev 13331 : Simplify parallel synchronizer roots iterator.


 152   virtual bool do_metadata()        { return false; }
 153 };
 154 
 155 class ShenandoahMarkRefsMetadataMatrixClosure : public ShenandoahMarkRefsSuperClosure {
 156 public:
 157   ShenandoahMarkRefsMetadataMatrixClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) :
 158     ShenandoahMarkRefsSuperClosure(q, rp) {};
 159 
 160   template <class T>
 161   inline void do_oop_nv(T* p)       { work<T, NONE, true>(p); }
 162   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 163   virtual void do_oop(oop* p)       { do_oop_nv(p); }
 164   inline bool do_metadata_nv()      { return true; }
 165   virtual bool do_metadata()        { return true; }
 166 };
 167 
 168 class ShenandoahUpdateHeapRefsSuperClosure : public ExtendedOopClosure {
 169 private:
 170   ShenandoahHeap* _heap;
 171 public:
 172   ShenandoahUpdateHeapRefsSuperClosure() :
 173     _heap(ShenandoahHeap::heap()) {}
 174 
 175   template <class T, bool UPDATE_MATRIX>
 176   void work(T *p);
 177 };
 178 
 179 class ShenandoahUpdateHeapRefsClosure : public ShenandoahUpdateHeapRefsSuperClosure {
 180 public:
 181   ShenandoahUpdateHeapRefsClosure() : ShenandoahUpdateHeapRefsSuperClosure() {}
 182 
 183   template <class T>
 184   inline  void do_oop_nv(T* p)      { work<T, false>(p); }
 185   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 186   virtual void do_oop(oop* p)       { do_oop_nv(p); }
 187 };
 188 
 189 class ShenandoahUpdateHeapRefsMatrixClosure : public ShenandoahUpdateHeapRefsSuperClosure {
 190 private:
 191   ShenandoahHeap* _heap;
 192 public:
 193   ShenandoahUpdateHeapRefsMatrixClosure() : ShenandoahUpdateHeapRefsSuperClosure() {}




 152   virtual bool do_metadata()        { return false; }
 153 };
 154 
 155 class ShenandoahMarkRefsMetadataMatrixClosure : public ShenandoahMarkRefsSuperClosure {
 156 public:
 157   ShenandoahMarkRefsMetadataMatrixClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) :
 158     ShenandoahMarkRefsSuperClosure(q, rp) {};
 159 
 160   template <class T>
 161   inline void do_oop_nv(T* p)       { work<T, NONE, true>(p); }
 162   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 163   virtual void do_oop(oop* p)       { do_oop_nv(p); }
 164   inline bool do_metadata_nv()      { return true; }
 165   virtual bool do_metadata()        { return true; }
 166 };
 167 
 168 class ShenandoahUpdateHeapRefsSuperClosure : public ExtendedOopClosure {
 169 private:
 170   ShenandoahHeap* _heap;
 171 public:
 172   ShenandoahUpdateHeapRefsSuperClosure();

 173 
 174   template <class T, bool UPDATE_MATRIX>
 175   void work(T *p);
 176 };
 177 
 178 class ShenandoahUpdateHeapRefsClosure : public ShenandoahUpdateHeapRefsSuperClosure {
 179 public:
 180   ShenandoahUpdateHeapRefsClosure() : ShenandoahUpdateHeapRefsSuperClosure() {}
 181 
 182   template <class T>
 183   inline  void do_oop_nv(T* p)      { work<T, false>(p); }
 184   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 185   virtual void do_oop(oop* p)       { do_oop_nv(p); }
 186 };
 187 
 188 class ShenandoahUpdateHeapRefsMatrixClosure : public ShenandoahUpdateHeapRefsSuperClosure {
 189 private:
 190   ShenandoahHeap* _heap;
 191 public:
 192   ShenandoahUpdateHeapRefsMatrixClosure() : ShenandoahUpdateHeapRefsSuperClosure() {}


< prev index next >