src/share/vm/memory/iterator.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hsx-gc Sdiff src/share/vm/memory

src/share/vm/memory/iterator.hpp

Print this page




 118   void do_oop_nv(narrowOop* p) { _wrapped_closure->do_oop(p); }
 119 
 120   void do_oop(oop* p)          { assert(false, "Only the _nv versions should be used");
 121                                  _wrapped_closure->do_oop(p); }
 122   void do_oop(narrowOop* p)    { assert(false, "Only the _nv versions should be used");
 123                                  _wrapped_closure->do_oop(p);}
 124 };
 125 
 126 class KlassClosure : public Closure {
 127  public:
 128   virtual void do_klass(Klass* k) = 0;
 129 };
 130 
 131 class KlassToOopClosure : public KlassClosure {
 132   OopClosure* _oop_closure;
 133  public:
 134   KlassToOopClosure(OopClosure* oop_closure) : _oop_closure(oop_closure) {}
 135   virtual void do_klass(Klass* k);
 136 };
 137 





















 138 // ObjectClosure is used for iterating through an object space
 139 
 140 class ObjectClosure : public Closure {
 141  public:
 142   // Called for each object.
 143   virtual void do_object(oop obj) = 0;
 144 };
 145 
 146 
 147 class BoolObjectClosure : public ObjectClosure {
 148  public:
 149   virtual bool do_object_b(oop obj) = 0;
 150 };
 151 
 152 // Applies an oop closure to all ref fields in objects iterated over in an
 153 // object iteration.
 154 class ObjectToOopClosure: public ObjectClosure {
 155   ExtendedOopClosure* _cl;
 156 public:
 157   void do_object(oop obj);




 118   void do_oop_nv(narrowOop* p) { _wrapped_closure->do_oop(p); }
 119 
 120   void do_oop(oop* p)          { assert(false, "Only the _nv versions should be used");
 121                                  _wrapped_closure->do_oop(p); }
 122   void do_oop(narrowOop* p)    { assert(false, "Only the _nv versions should be used");
 123                                  _wrapped_closure->do_oop(p);}
 124 };
 125 
 126 class KlassClosure : public Closure {
 127  public:
 128   virtual void do_klass(Klass* k) = 0;
 129 };
 130 
 131 class KlassToOopClosure : public KlassClosure {
 132   OopClosure* _oop_closure;
 133  public:
 134   KlassToOopClosure(OopClosure* oop_closure) : _oop_closure(oop_closure) {}
 135   virtual void do_klass(Klass* k);
 136 };
 137 
 138 class CLDToOopClosure {
 139   OopClosure* _oop_closure;
 140   KlassToOopClosure _default_klass_closure;
 141   KlassClosure* _klass_closure;
 142   bool _must_claim_cld;
 143 
 144  public:
 145   CLDToOopClosure(OopClosure* oop_closure, bool must_claim_cld = true) :
 146       _oop_closure(oop_closure),
 147       _default_klass_closure(oop_closure),
 148       _klass_closure(&_default_klass_closure),
 149       _must_claim_cld(must_claim_cld) {}
 150   CLDToOopClosure(OopClosure* oop_closure, KlassClosure* klass_closure, bool must_claim_cld = true) :
 151       _oop_closure(oop_closure),
 152       _default_klass_closure(NULL), // Ignored
 153       _klass_closure(klass_closure),
 154       _must_claim_cld(must_claim_cld) {}
 155 
 156   void do_cld(ClassLoaderData* cld);
 157 };
 158 
 159 // ObjectClosure is used for iterating through an object space
 160 
 161 class ObjectClosure : public Closure {
 162  public:
 163   // Called for each object.
 164   virtual void do_object(oop obj) = 0;
 165 };
 166 
 167 
 168 class BoolObjectClosure : public ObjectClosure {
 169  public:
 170   virtual bool do_object_b(oop obj) = 0;
 171 };
 172 
 173 // Applies an oop closure to all ref fields in objects iterated over in an
 174 // object iteration.
 175 class ObjectToOopClosure: public ObjectClosure {
 176   ExtendedOopClosure* _cl;
 177 public:
 178   void do_object(oop obj);


src/share/vm/memory/iterator.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File