src/hotspot/share/gc/g1/g1FullGCOopClosures.hpp
changeset 50752 9d62da00bf15
parent 49827 a4672513d6e3
child 50800 6da12aa23b88
equal deleted inserted replaced
50751:d9132bdf6c30 50752:9d62da00bf15
    53 
    53 
    54   virtual void do_oop(oop* p);
    54   virtual void do_oop(oop* p);
    55   virtual void do_oop(narrowOop* p);
    55   virtual void do_oop(narrowOop* p);
    56 };
    56 };
    57 
    57 
    58 class G1MarkAndPushClosure : public ExtendedOopClosure {
    58 class G1MarkAndPushClosure : public OopIterateClosure {
    59   G1FullGCMarker* _marker;
    59   G1FullGCMarker* _marker;
    60   uint _worker_id;
    60   uint _worker_id;
    61 
    61 
    62 public:
    62 public:
    63   G1MarkAndPushClosure(uint worker, G1FullGCMarker* marker, ReferenceDiscoverer* ref) :
    63   G1MarkAndPushClosure(uint worker, G1FullGCMarker* marker, ReferenceDiscoverer* ref) :
    64     _marker(marker),
    64     _marker(marker),
    65     _worker_id(worker),
    65     _worker_id(worker),
    66     ExtendedOopClosure(ref) { }
    66     OopIterateClosure(ref) { }
    67 
    67 
    68   template <class T> inline void do_oop_nv(T* p);
    68   template <class T> inline void do_oop_work(T* p);
    69   virtual void do_oop(oop* p);
    69   virtual void do_oop(oop* p);
    70   virtual void do_oop(narrowOop* p);
    70   virtual void do_oop(narrowOop* p);
    71 
    71 
    72   virtual bool do_metadata();
    72   virtual bool do_metadata();
    73   bool do_metadata_nv();
       
    74 
       
    75   virtual void do_klass(Klass* k);
    73   virtual void do_klass(Klass* k);
    76   void do_klass_nv(Klass* k);
       
    77 
       
    78   virtual void do_cld(ClassLoaderData* cld);
    74   virtual void do_cld(ClassLoaderData* cld);
    79   void do_cld_nv(ClassLoaderData* cld);
       
    80 };
    75 };
    81 
    76 
    82 class G1AdjustClosure : public ExtendedOopClosure {
    77 class G1AdjustClosure : public BasicOopIterateClosure {
    83   template <class T> static inline void adjust_pointer(T* p);
    78   template <class T> static inline void adjust_pointer(T* p);
    84 public:
    79 public:
    85   template <class T> void do_oop_nv(T* p) { adjust_pointer(p); }
    80   template <class T> void do_oop_work(T* p) { adjust_pointer(p); }
    86   virtual void do_oop(oop* p);
    81   virtual void do_oop(oop* p);
    87   virtual void do_oop(narrowOop* p);
    82   virtual void do_oop(narrowOop* p);
    88 
    83 
    89   virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
    84   virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
    90 };
    85 };
   105   }
   100   }
   106 
   101 
   107   bool failures() { return _failures; }
   102   bool failures() { return _failures; }
   108   void print_object(outputStream* out, oop obj);
   103   void print_object(outputStream* out, oop obj);
   109 
   104 
   110   template <class T> void do_oop_nv(T* p);
   105   template <class T> void do_oop_work(T* p);
   111 
   106 
   112   void do_oop(oop* p)       { do_oop_nv(p); }
   107   void do_oop(oop* p)       { do_oop_work(p); }
   113   void do_oop(narrowOop* p) { do_oop_nv(p); }
   108   void do_oop(narrowOop* p) { do_oop_work(p); }
   114 };
   109 };
   115 
   110 
   116 class G1FollowStackClosure: public VoidClosure {
   111 class G1FollowStackClosure: public VoidClosure {
   117   G1FullGCMarker* _marker;
   112   G1FullGCMarker* _marker;
   118 
   113