void ClassLoaderData::loaded_classes_do(KlassClosure* klass_closure) {
  // Lock to avoid classes being modified/added/removed during iteration
  MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
  for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
    // Do not filter ArrayKlass oops here...
    if (k->oop_is_array() || (k->oop_is_instance() && InstanceKlass::cast(k)->is_loaded())) {
      klass_closure->do_klass(k);
    }
  }
}
Example #2
0
 // Casting from klassOop
 static arrayKlass* cast(klassOop k) {
   Klass* kp = k->klass_part();
   assert(kp->null_vtbl() || kp->oop_is_array(), "cast to arrayKlass");
   return (arrayKlass*) kp;
 }