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; |