src/share/vm/classfile/classLoaderData.cpp

changeset 6024
e64f1fe9756b
parent 5784
190899198332
child 6131
86e6d691f2e1
equal deleted inserted replaced
5975:b658cfe35857 6024:e64f1fe9756b
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!");

mercurial