129 for (Klass* k = _klasses; k != NULL; k = k->next_link()) { |
129 for (Klass* k = _klasses; k != NULL; k = k->next_link()) { |
130 f(k); |
130 f(k); |
131 } |
131 } |
132 } |
132 } |
133 |
133 |
|
134 void ClassLoaderData::loaded_classes_do(KlassClosure* klass_closure) { |
|
135 // Lock to avoid classes being modified/added/removed during iteration |
|
136 MutexLockerEx ml(metaspace_lock(), Mutex::_no_safepoint_check_flag); |
|
137 for (Klass* k = _klasses; k != NULL; k = k->next_link()) { |
|
138 // Do not filter ArrayKlass oops here... |
|
139 if (k->oop_is_array() || (k->oop_is_instance() && InstanceKlass::cast(k)->is_loaded())) { |
|
140 klass_closure->do_klass(k); |
|
141 } |
|
142 } |
|
143 } |
|
144 |
134 void ClassLoaderData::classes_do(void f(InstanceKlass*)) { |
145 void ClassLoaderData::classes_do(void f(InstanceKlass*)) { |
135 for (Klass* k = _klasses; k != NULL; k = k->next_link()) { |
146 for (Klass* k = _klasses; k != NULL; k = k->next_link()) { |
136 if (k->oop_is_instance()) { |
147 if (k->oop_is_instance()) { |
137 f(InstanceKlass::cast(k)); |
148 f(InstanceKlass::cast(k)); |
138 } |
149 } |
595 } |
606 } |
596 |
607 |
597 void ClassLoaderDataGraph::classes_do(void f(Klass* const)) { |
608 void ClassLoaderDataGraph::classes_do(void f(Klass* const)) { |
598 for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) { |
609 for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) { |
599 cld->classes_do(f); |
610 cld->classes_do(f); |
|
611 } |
|
612 } |
|
613 |
|
614 void ClassLoaderDataGraph::loaded_classes_do(KlassClosure* klass_closure) { |
|
615 for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) { |
|
616 cld->loaded_classes_do(klass_closure); |
600 } |
617 } |
601 } |
618 } |
602 |
619 |
603 void ClassLoaderDataGraph::classes_unloading_do(void f(Klass* const)) { |
620 void ClassLoaderDataGraph::classes_unloading_do(void f(Klass* const)) { |
604 assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint!"); |
621 assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint!"); |