src/hotspot/share/gc/shenandoah/shenandoahOopClosures.hpp
changeset 54414 f855ec13aa25
parent 53244 9807daeb47c4
child 54423 6c0ab8bd8da5
equal deleted inserted replaced
54413:30067047ed88 54414:f855ec13aa25
   182   virtual void do_oop(narrowOop* p) { do_oop_work(p); }
   182   virtual void do_oop(narrowOop* p) { do_oop_work(p); }
   183   virtual void do_oop(oop* p)       { do_oop_work(p); }
   183   virtual void do_oop(oop* p)       { do_oop_work(p); }
   184   virtual bool do_metadata()        { return true; }
   184   virtual bool do_metadata()        { return true; }
   185 };
   185 };
   186 
   186 
   187 class ShenandoahUpdateHeapRefsSuperClosure : public BasicOopIterateClosure {
   187 class ShenandoahUpdateHeapRefsClosure : public BasicOopIterateClosure {
   188 private:
   188 private:
   189   ShenandoahHeap* _heap;
   189   ShenandoahHeap* _heap;
   190 public:
   190 
   191   ShenandoahUpdateHeapRefsSuperClosure() :
   191   template <class T>
       
   192   void do_oop_work(T* p);
       
   193 
       
   194 public:
       
   195   ShenandoahUpdateHeapRefsClosure() :
   192     _heap(ShenandoahHeap::heap()) {}
   196     _heap(ShenandoahHeap::heap()) {}
   193 
       
   194   template <class T>
       
   195   void work(T *p);
       
   196 };
       
   197 
       
   198 class ShenandoahUpdateHeapRefsClosure : public ShenandoahUpdateHeapRefsSuperClosure {
       
   199 private:
       
   200   template <class T>
       
   201   inline  void do_oop_work(T* p)    { work<T>(p); }
       
   202 
       
   203 public:
       
   204   ShenandoahUpdateHeapRefsClosure() : ShenandoahUpdateHeapRefsSuperClosure() {}
       
   205 
   197 
   206   virtual void do_oop(narrowOop* p) { do_oop_work(p); }
   198   virtual void do_oop(narrowOop* p) { do_oop_work(p); }
   207   virtual void do_oop(oop* p)       { do_oop_work(p); }
   199   virtual void do_oop(oop* p)       { do_oop_work(p); }
   208 };
   200 };
   209 
   201