212 void oops_do_chunk(OopClosure* f, Chunk* c, const juint size);
213
214 public:
215 ChunkedHandleList() : _head(NULL) {}
216 ~ChunkedHandleList();
217
218 // Only one thread at a time can add, guarded by ClassLoaderData::metaspace_lock().
219 // However, multiple threads can execute oops_do concurrently with add.
220 oop* add(oop o);
221 #ifdef ASSERT
222 bool contains(oop* p);
223 #endif
224 void oops_do(OopClosure* f);
225 };
226
227 friend class ClassLoaderDataGraph;
228 friend class ClassLoaderDataGraphKlassIteratorAtomic;
229 friend class ClassLoaderDataGraphKlassIteratorStatic;
230 friend class ClassLoaderDataGraphMetaspaceIterator;
231 friend class InstanceKlass;
232 friend class MetaDataFactory;
233 friend class Method;
234
235 static ClassLoaderData * _the_null_class_loader_data;
236
237 oop _class_loader; // oop used to uniquely identify a class loader
238 // class loader or a canonical class path
239 Dependencies _dependencies; // holds dependencies from this class loader
240 // data to others.
241
242 Metaspace * volatile _metaspace; // Meta-space where meta-data defined by the
243 // classes in the class loader are allocated.
244 Mutex* _metaspace_lock; // Locks the metaspace for allocations and setup.
245 bool _unloading; // true if this class loader goes away
246 bool _is_anonymous; // if this CLD is for an anonymous class
247
248 // Remembered sets support for the oops in the class loader data.
249 bool _modified_oops; // Card Table Equivalent (YC/CMS support)
250 bool _accumulated_modified_oops; // Mod Union Equivalent (CMS support)
|
212 void oops_do_chunk(OopClosure* f, Chunk* c, const juint size);
213
214 public:
215 ChunkedHandleList() : _head(NULL) {}
216 ~ChunkedHandleList();
217
218 // Only one thread at a time can add, guarded by ClassLoaderData::metaspace_lock().
219 // However, multiple threads can execute oops_do concurrently with add.
220 oop* add(oop o);
221 #ifdef ASSERT
222 bool contains(oop* p);
223 #endif
224 void oops_do(OopClosure* f);
225 };
226
227 friend class ClassLoaderDataGraph;
228 friend class ClassLoaderDataGraphKlassIteratorAtomic;
229 friend class ClassLoaderDataGraphKlassIteratorStatic;
230 friend class ClassLoaderDataGraphMetaspaceIterator;
231 friend class InstanceKlass;
232 friend class Klass;
233 friend class MetaDataFactory;
234 friend class Method;
235
236 static ClassLoaderData * _the_null_class_loader_data;
237
238 oop _class_loader; // oop used to uniquely identify a class loader
239 // class loader or a canonical class path
240 Dependencies _dependencies; // holds dependencies from this class loader
241 // data to others.
242
243 Metaspace * volatile _metaspace; // Meta-space where meta-data defined by the
244 // classes in the class loader are allocated.
245 Mutex* _metaspace_lock; // Locks the metaspace for allocations and setup.
246 bool _unloading; // true if this class loader goes away
247 bool _is_anonymous; // if this CLD is for an anonymous class
248
249 // Remembered sets support for the oops in the class loader data.
250 bool _modified_oops; // Card Table Equivalent (YC/CMS support)
251 bool _accumulated_modified_oops; // Mod Union Equivalent (CMS support)
|