< prev index next >

src/share/vm/memory/iterator.hpp

Print this page

        

*** 136,206 **** class CLDClosure : public Closure { public: virtual void do_cld(ClassLoaderData* cld) = 0; }; - class KlassToOopClosure : public KlassClosure { - friend class MetadataAwareOopClosure; - friend class MetadataAwareOopsInGenClosure; - - OopClosure* _oop_closure; - - // Used when _oop_closure couldn't be set in an initialization list. - void initialize(OopClosure* oop_closure) { - assert(_oop_closure == NULL, "Should only be called once"); - _oop_closure = oop_closure; - } - - public: - KlassToOopClosure(OopClosure* oop_closure = NULL) : _oop_closure(oop_closure) {} - - virtual void do_klass(Klass* k); - }; class CLDToOopClosure : public CLDClosure { OopClosure* _oop_closure; - KlassToOopClosure _klass_closure; bool _must_claim_cld; public: CLDToOopClosure(OopClosure* oop_closure, bool must_claim_cld = true) : _oop_closure(oop_closure), - _klass_closure(oop_closure), _must_claim_cld(must_claim_cld) {} void do_cld(ClassLoaderData* cld); }; class CLDToKlassAndOopClosure : public CLDClosure { friend class G1CollectedHeap; protected: OopClosure* _oop_closure; - KlassClosure* _klass_closure; bool _must_claim_cld; public: ! CLDToKlassAndOopClosure(KlassClosure* klass_closure, ! OopClosure* oop_closure, bool must_claim_cld) : _oop_closure(oop_closure), - _klass_closure(klass_closure), _must_claim_cld(must_claim_cld) {} void do_cld(ClassLoaderData* cld); }; // The base class for all concurrent marking closures, // that participates in class unloading. // It's used to proxy through the metadata to the oops defined in them. class MetadataAwareOopClosure: public ExtendedOopClosure { - KlassToOopClosure _klass_closure; public: ! MetadataAwareOopClosure() : ExtendedOopClosure() { ! _klass_closure.initialize(this); ! } ! MetadataAwareOopClosure(ReferenceProcessor* rp) : ExtendedOopClosure(rp) { ! _klass_closure.initialize(this); ! } bool do_metadata_nv() { return true; } virtual bool do_metadata() { return do_metadata_nv(); } void do_klass_nv(Klass* k); --- 136,179 ---- class CLDClosure : public Closure { public: virtual void do_cld(ClassLoaderData* cld) = 0; }; class CLDToOopClosure : public CLDClosure { OopClosure* _oop_closure; bool _must_claim_cld; public: CLDToOopClosure(OopClosure* oop_closure, bool must_claim_cld = true) : _oop_closure(oop_closure), _must_claim_cld(must_claim_cld) {} void do_cld(ClassLoaderData* cld); }; class CLDToKlassAndOopClosure : public CLDClosure { friend class G1CollectedHeap; protected: OopClosure* _oop_closure; bool _must_claim_cld; public: ! CLDToKlassAndOopClosure(OopClosure* oop_closure, bool must_claim_cld) : _oop_closure(oop_closure), _must_claim_cld(must_claim_cld) {} void do_cld(ClassLoaderData* cld); }; // The base class for all concurrent marking closures, // that participates in class unloading. // It's used to proxy through the metadata to the oops defined in them. class MetadataAwareOopClosure: public ExtendedOopClosure { public: ! MetadataAwareOopClosure() : ExtendedOopClosure() { } ! MetadataAwareOopClosure(ReferenceProcessor* rp) : ExtendedOopClosure(rp) { } bool do_metadata_nv() { return true; } virtual bool do_metadata() { return do_metadata_nv(); } void do_klass_nv(Klass* k);
< prev index next >