src/hotspot/share/gc/serial/markSweep.hpp
changeset 50752 9d62da00bf15
parent 50059 10843c8ecd54
child 53244 9807daeb47c4
equal deleted inserted replaced
50751:d9132bdf6c30 50752:9d62da00bf15
    54 
    54 
    55 class MarkSweep : AllStatic {
    55 class MarkSweep : AllStatic {
    56   //
    56   //
    57   // Inline closure decls
    57   // Inline closure decls
    58   //
    58   //
    59   class FollowRootClosure: public OopsInGenClosure {
    59   class FollowRootClosure: public BasicOopsInGenClosure {
    60    public:
    60    public:
    61     virtual void do_oop(oop* p);
    61     virtual void do_oop(oop* p);
    62     virtual void do_oop(narrowOop* p);
    62     virtual void do_oop(narrowOop* p);
    63   };
    63   };
    64 
    64 
   168   static void follow_array(objArrayOop array);
   168   static void follow_array(objArrayOop array);
   169 
   169 
   170   static void follow_array_chunk(objArrayOop array, int index);
   170   static void follow_array_chunk(objArrayOop array, int index);
   171 };
   171 };
   172 
   172 
   173 class MarkAndPushClosure: public ExtendedOopClosure {
   173 class MarkAndPushClosure: public OopIterateClosure {
   174 public:
   174 public:
   175   template <typename T> void do_oop_nv(T* p);
   175   template <typename T> void do_oop_work(T* p);
   176   virtual void do_oop(oop* p);
   176   virtual void do_oop(oop* p);
   177   virtual void do_oop(narrowOop* p);
   177   virtual void do_oop(narrowOop* p);
   178 
   178 
   179   virtual bool do_metadata();
   179   virtual bool do_metadata() { return true; }
   180   bool do_metadata_nv();
       
   181 
       
   182   virtual void do_klass(Klass* k);
   180   virtual void do_klass(Klass* k);
   183   void do_klass_nv(Klass* k);
       
   184 
       
   185   virtual void do_cld(ClassLoaderData* cld);
   181   virtual void do_cld(ClassLoaderData* cld);
   186   void do_cld_nv(ClassLoaderData* cld);
       
   187 
   182 
   188   void set_ref_discoverer(ReferenceDiscoverer* rd) {
   183   void set_ref_discoverer(ReferenceDiscoverer* rd) {
   189     set_ref_discoverer_internal(rd);
   184     set_ref_discoverer_internal(rd);
   190   }
   185   }
   191 };
   186 };
   192 
   187 
   193 class AdjustPointerClosure: public OopsInGenClosure {
   188 class AdjustPointerClosure: public BasicOopsInGenClosure {
   194  public:
   189  public:
   195   template <typename T> void do_oop_nv(T* p);
   190   template <typename T> void do_oop_work(T* p);
   196   virtual void do_oop(oop* p);
   191   virtual void do_oop(oop* p);
   197   virtual void do_oop(narrowOop* p);
   192   virtual void do_oop(narrowOop* p);
   198   virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
   193   virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
   199 
   194 
   200   // This closure provides its own oop verification code.
   195   // This closure provides its own oop verification code.