< prev index next >

src/share/vm/memory/iterator.hpp

Print this page




 111   // Can be used by subclasses to turn off the default verification of oop fields.
 112   virtual bool should_verify_oops() { return true; }
 113 #endif
 114 };
 115 
 116 // Wrapper closure only used to implement oop_iterate_no_header().
 117 class NoHeaderExtendedOopClosure : public ExtendedOopClosure {
 118   OopClosure* _wrapped_closure;
 119  public:
 120   NoHeaderExtendedOopClosure(OopClosure* cl) : _wrapped_closure(cl) {}
 121   // Warning: this calls the virtual version do_oop in the the wrapped closure.
 122   void do_oop_nv(oop* p)       { _wrapped_closure->do_oop(p); }
 123   void do_oop_nv(narrowOop* p) { _wrapped_closure->do_oop(p); }
 124 
 125   void do_oop(oop* p)          { assert(false, "Only the _nv versions should be used");
 126                                  _wrapped_closure->do_oop(p); }
 127   void do_oop(narrowOop* p)    { assert(false, "Only the _nv versions should be used");
 128                                  _wrapped_closure->do_oop(p);}
 129 };
 130 





 131 class KlassClosure : public Closure {
 132  public:
 133   virtual void do_klass(Klass* k) = 0;
 134 };
 135 
 136 class CLDClosure : public Closure {
 137  public:
 138   virtual void do_cld(ClassLoaderData* cld) = 0;
 139 };
 140 
 141 class KlassToOopClosure : public KlassClosure {
 142   friend class MetadataAwareOopClosure;
 143   friend class MetadataAwareOopsInGenClosure;
 144 
 145   OopClosure* _oop_closure;
 146 
 147   // Used when _oop_closure couldn't be set in an initialization list.
 148   void initialize(OopClosure* oop_closure) {
 149     assert(_oop_closure == NULL, "Should only be called once");
 150     _oop_closure = oop_closure;




 111   // Can be used by subclasses to turn off the default verification of oop fields.
 112   virtual bool should_verify_oops() { return true; }
 113 #endif
 114 };
 115 
 116 // Wrapper closure only used to implement oop_iterate_no_header().
 117 class NoHeaderExtendedOopClosure : public ExtendedOopClosure {
 118   OopClosure* _wrapped_closure;
 119  public:
 120   NoHeaderExtendedOopClosure(OopClosure* cl) : _wrapped_closure(cl) {}
 121   // Warning: this calls the virtual version do_oop in the the wrapped closure.
 122   void do_oop_nv(oop* p)       { _wrapped_closure->do_oop(p); }
 123   void do_oop_nv(narrowOop* p) { _wrapped_closure->do_oop(p); }
 124 
 125   void do_oop(oop* p)          { assert(false, "Only the _nv versions should be used");
 126                                  _wrapped_closure->do_oop(p); }
 127   void do_oop(narrowOop* p)    { assert(false, "Only the _nv versions should be used");
 128                                  _wrapped_closure->do_oop(p);}
 129 };
 130 
 131 class BufferedValueClosure : public Closure {
 132 public:
 133   virtual void do_buffered_value(oop* p) = 0;
 134 };
 135 
 136 class KlassClosure : public Closure {
 137  public:
 138   virtual void do_klass(Klass* k) = 0;
 139 };
 140 
 141 class CLDClosure : public Closure {
 142  public:
 143   virtual void do_cld(ClassLoaderData* cld) = 0;
 144 };
 145 
 146 class KlassToOopClosure : public KlassClosure {
 147   friend class MetadataAwareOopClosure;
 148   friend class MetadataAwareOopsInGenClosure;
 149 
 150   OopClosure* _oop_closure;
 151 
 152   // Used when _oop_closure couldn't be set in an initialization list.
 153   void initialize(OopClosure* oop_closure) {
 154     assert(_oop_closure == NULL, "Should only be called once");
 155     _oop_closure = oop_closure;


< prev index next >