< prev index next >

src/share/vm/classfile/classLoaderData.cpp

Print this page




 188   MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
 189   for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
 190     // Do not filter ArrayKlass oops here...
 191     if (k->is_array_klass() || (k->is_instance_klass() && InstanceKlass::cast(k)->is_loaded())) {
 192       klass_closure->do_klass(k);
 193     }
 194   }
 195 }
 196 
 197 void ClassLoaderData::classes_do(void f(InstanceKlass*)) {
 198   // Lock-free access requires load_ptr_acquire
 199   for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
 200     if (k->is_instance_klass()) {
 201       f(InstanceKlass::cast(k));
 202     }
 203     assert(k != k->next_link(), "no loops!");
 204   }
 205 }
 206 
 207 void ClassLoaderData::modules_do(void f(ModuleEntry*)) {
 208   assert_locked_or_safepoint(Module_lock);
 209   if (_modules != NULL) {
 210     for (int i = 0; i < _modules->table_size(); i++) {
 211       for (ModuleEntry* entry = _modules->bucket(i);

 212                               entry != NULL;
 213                               entry = entry->next()) {
 214         f(entry);
 215       }
 216     }
 217   }
 218 }
 219 
 220 void ClassLoaderData::packages_do(void f(PackageEntry*)) {
 221   // Lock-free access requires load_ptr_acquire
 222   PackageEntryTable* packages = load_ptr_acquire(&_packages);
 223   if (packages != NULL) {
 224     for (int i = 0; i < packages->table_size(); i++) {
 225       for (PackageEntry* entry = packages->bucket(i);
 226                               entry != NULL;
 227                               entry = entry->next()) {
 228         f(entry);
 229       }
 230     }
 231   }




 188   MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
 189   for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
 190     // Do not filter ArrayKlass oops here...
 191     if (k->is_array_klass() || (k->is_instance_klass() && InstanceKlass::cast(k)->is_loaded())) {
 192       klass_closure->do_klass(k);
 193     }
 194   }
 195 }
 196 
 197 void ClassLoaderData::classes_do(void f(InstanceKlass*)) {
 198   // Lock-free access requires load_ptr_acquire
 199   for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
 200     if (k->is_instance_klass()) {
 201       f(InstanceKlass::cast(k));
 202     }
 203     assert(k != k->next_link(), "no loops!");
 204   }
 205 }
 206 
 207 void ClassLoaderData::modules_do(void f(ModuleEntry*)) {
 208   // Lock-free access requires load_ptr_acquire
 209   ModuleEntryTable* modules = load_ptr_acquire(&_modules);
 210   if (modules != NULL) {
 211     for (int i = 0; i < modules->table_size(); i++) {
 212       for (ModuleEntry* entry = modules->bucket(i);
 213            entry != NULL;
 214            entry = entry->next()) {
 215         f(entry);
 216       }
 217     }
 218   }
 219 }
 220 
 221 void ClassLoaderData::packages_do(void f(PackageEntry*)) {
 222   // Lock-free access requires load_ptr_acquire
 223   PackageEntryTable* packages = load_ptr_acquire(&_packages);
 224   if (packages != NULL) {
 225     for (int i = 0; i < packages->table_size(); i++) {
 226       for (PackageEntry* entry = packages->bucket(i);
 227            entry != NULL;
 228            entry = entry->next()) {
 229         f(entry);
 230       }
 231     }
 232   }


< prev index next >