hotspot/src/share/vm/oops/klass.cpp
changeset 36508 5f9eee6b383b
parent 36384 b0b41336a9a8
child 38151 fffedc5e5cf8
equal deleted inserted replaced
36507:c80f6ecb0bb3 36508:5f9eee6b383b
   510   // Recreate the class mirror.
   510   // Recreate the class mirror.
   511   // Only recreate it if not present.  A previous attempt to restore may have
   511   // Only recreate it if not present.  A previous attempt to restore may have
   512   // gotten an OOM later but keep the mirror if it was created.
   512   // gotten an OOM later but keep the mirror if it was created.
   513   if (java_mirror() == NULL) {
   513   if (java_mirror() == NULL) {
   514     Handle loader = loader_data->class_loader();
   514     Handle loader = loader_data->class_loader();
   515     java_lang_Class::create_mirror(this, loader, protection_domain, CHECK);
   515     ModuleEntry* module_entry = NULL;
       
   516     Klass* k = this;
       
   517     if (k->is_objArray_klass()) {
       
   518       k = ObjArrayKlass::cast(k)->bottom_klass();
       
   519     }
       
   520     // Obtain klass' module.
       
   521     if (k->is_instance_klass()) {
       
   522       InstanceKlass* ik = (InstanceKlass*) k;
       
   523       module_entry = ik->module();
       
   524     } else {
       
   525       module_entry = ModuleEntryTable::javabase_module();
       
   526     }
       
   527     // Obtain java.lang.reflect.Module, if available
       
   528     Handle module_handle(THREAD, ((module_entry != NULL) ? JNIHandles::resolve(module_entry->module()) : (oop)NULL));
       
   529     java_lang_Class::create_mirror(this, loader, module_handle, protection_domain, CHECK);
   516   }
   530   }
   517 }
   531 }
   518 
   532 
   519 Klass* Klass::array_klass_or_null(int rank) {
   533 Klass* Klass::array_klass_or_null(int rank) {
   520   EXCEPTION_MARK;
   534   EXCEPTION_MARK;