130 KlassToOopClosure(OopClosure* oop_closure = NULL) : _oop_closure(oop_closure) {}
131
132 virtual void do_klass(Klass* k);
133 };
134
135 class CLDToOopClosure : public CLDClosure {
136 OopClosure* _oop_closure;
137 KlassToOopClosure _klass_closure;
138 bool _must_claim_cld;
139
140 public:
141 CLDToOopClosure(OopClosure* oop_closure, bool must_claim_cld = true) :
142 _oop_closure(oop_closure),
143 _klass_closure(oop_closure),
144 _must_claim_cld(must_claim_cld) {}
145
146 void do_cld(ClassLoaderData* cld);
147 };
148
149 class CLDToKlassAndOopClosure : public CLDClosure {
150 friend class SharedHeap;
151 friend class G1CollectedHeap;
152 protected:
153 OopClosure* _oop_closure;
154 KlassClosure* _klass_closure;
155 bool _must_claim_cld;
156 public:
157 CLDToKlassAndOopClosure(KlassClosure* klass_closure,
158 OopClosure* oop_closure,
159 bool must_claim_cld) :
160 _oop_closure(oop_closure),
161 _klass_closure(klass_closure),
162 _must_claim_cld(must_claim_cld) {}
163 void do_cld(ClassLoaderData* cld);
164 };
165
166 // The base class for all concurrent marking closures,
167 // that participates in class unloading.
168 // It's used to proxy through the metadata to the oops defined in them.
169 class MetadataAwareOopClosure: public ExtendedOopClosure {
170 KlassToOopClosure _klass_closure;
|
130 KlassToOopClosure(OopClosure* oop_closure = NULL) : _oop_closure(oop_closure) {}
131
132 virtual void do_klass(Klass* k);
133 };
134
135 class CLDToOopClosure : public CLDClosure {
136 OopClosure* _oop_closure;
137 KlassToOopClosure _klass_closure;
138 bool _must_claim_cld;
139
140 public:
141 CLDToOopClosure(OopClosure* oop_closure, bool must_claim_cld = true) :
142 _oop_closure(oop_closure),
143 _klass_closure(oop_closure),
144 _must_claim_cld(must_claim_cld) {}
145
146 void do_cld(ClassLoaderData* cld);
147 };
148
149 class CLDToKlassAndOopClosure : public CLDClosure {
150 friend class G1CollectedHeap;
151 protected:
152 OopClosure* _oop_closure;
153 KlassClosure* _klass_closure;
154 bool _must_claim_cld;
155 public:
156 CLDToKlassAndOopClosure(KlassClosure* klass_closure,
157 OopClosure* oop_closure,
158 bool must_claim_cld) :
159 _oop_closure(oop_closure),
160 _klass_closure(klass_closure),
161 _must_claim_cld(must_claim_cld) {}
162 void do_cld(ClassLoaderData* cld);
163 };
164
165 // The base class for all concurrent marking closures,
166 // that participates in class unloading.
167 // It's used to proxy through the metadata to the oops defined in them.
168 class MetadataAwareOopClosure: public ExtendedOopClosure {
169 KlassToOopClosure _klass_closure;
|