230
231 void ClassLoaderData::classes_do(KlassClosure* klass_closure) {
232 // Lock-free access requires load_ptr_acquire
233 for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
234 klass_closure->do_klass(k);
235 assert(k != k->next_link(), "no loops!");
236 }
237 }
238
239 void ClassLoaderData::classes_do(void f(Klass * const)) {
240 // Lock-free access requires load_ptr_acquire
241 for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
242 f(k);
243 assert(k != k->next_link(), "no loops!");
244 }
245 }
246
247 void ClassLoaderData::methods_do(void f(Method*)) {
248 // Lock-free access requires load_ptr_acquire
249 for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
250 if (k->is_instance_klass()) {
251 InstanceKlass::cast(k)->methods_do(f);
252 }
253 }
254 }
255
256 void ClassLoaderData::loaded_classes_do(KlassClosure* klass_closure) {
257 // Lock to avoid classes being modified/added/removed during iteration
258 MutexLockerEx ml(metaspace_lock(), Mutex::_no_safepoint_check_flag);
259 for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
260 // Do not filter ArrayKlass oops here...
261 if (k->is_array_klass() || (k->is_instance_klass() && InstanceKlass::cast(k)->is_loaded())) {
262 klass_closure->do_klass(k);
263 }
264 }
265 }
266
267 void ClassLoaderData::classes_do(void f(InstanceKlass*)) {
268 // Lock-free access requires load_ptr_acquire
269 for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
270 if (k->is_instance_klass()) {
|
230
231 void ClassLoaderData::classes_do(KlassClosure* klass_closure) {
232 // Lock-free access requires load_ptr_acquire
233 for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
234 klass_closure->do_klass(k);
235 assert(k != k->next_link(), "no loops!");
236 }
237 }
238
239 void ClassLoaderData::classes_do(void f(Klass * const)) {
240 // Lock-free access requires load_ptr_acquire
241 for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
242 f(k);
243 assert(k != k->next_link(), "no loops!");
244 }
245 }
246
247 void ClassLoaderData::methods_do(void f(Method*)) {
248 // Lock-free access requires load_ptr_acquire
249 for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
250 if (k->is_instance_klass() && InstanceKlass::cast(k)->is_loaded()) {
251 InstanceKlass::cast(k)->methods_do(f);
252 }
253 }
254 }
255
256 void ClassLoaderData::loaded_classes_do(KlassClosure* klass_closure) {
257 // Lock to avoid classes being modified/added/removed during iteration
258 MutexLockerEx ml(metaspace_lock(), Mutex::_no_safepoint_check_flag);
259 for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
260 // Do not filter ArrayKlass oops here...
261 if (k->is_array_klass() || (k->is_instance_klass() && InstanceKlass::cast(k)->is_loaded())) {
262 klass_closure->do_klass(k);
263 }
264 }
265 }
266
267 void ClassLoaderData::classes_do(void f(InstanceKlass*)) {
268 // Lock-free access requires load_ptr_acquire
269 for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
270 if (k->is_instance_klass()) {
|