< prev index next >
src/hotspot/share/oops/instanceKlass.cpp
Print this page
*** 2431,2446 ****
if (array_klasses() != NULL) {
array_klasses()->remove_java_mirror();
}
}
! void InstanceKlass::restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, TRAPS) {
// SystemDictionary::add_to_hierarchy() sets the init_state to loaded
// before the InstanceKlass is added to the SystemDictionary. Make
// sure the current state is <loaded.
assert(!is_loaded(), "invalid init state");
! set_package(loader_data, CHECK);
Klass::restore_unshareable_info(loader_data, protection_domain, CHECK);
Array<Method*>* methods = this->methods();
int num_methods = methods->length();
for (int index = 0; index < num_methods; ++index) {
--- 2431,2447 ----
if (array_klasses() != NULL) {
array_klasses()->remove_java_mirror();
}
}
! void InstanceKlass::restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain,
! PackageEntry* pkg_entry, TRAPS) {
// SystemDictionary::add_to_hierarchy() sets the init_state to loaded
// before the InstanceKlass is added to the SystemDictionary. Make
// sure the current state is <loaded.
assert(!is_loaded(), "invalid init state");
! set_package(loader_data, pkg_entry, CHECK);
Klass::restore_unshareable_info(loader_data, protection_domain, CHECK);
Array<Method*>* methods = this->methods();
int num_methods = methods->length();
for (int index = 0; index < num_methods; ++index) {
*** 2460,2470 ****
constants()->restore_unshareable_info(CHECK);
if (array_klasses() != NULL) {
// Array classes have null protection domain.
// --> see ArrayKlass::complete_create_array_klass()
! array_klasses()->restore_unshareable_info(ClassLoaderData::the_null_class_loader_data(), Handle(), CHECK);
}
// Initialize current biased locking state.
if (UseBiasedLocking && BiasedLocking::enabled()) {
set_prototype_header(markWord::biased_locking_prototype());
--- 2461,2471 ----
constants()->restore_unshareable_info(CHECK);
if (array_klasses() != NULL) {
// Array classes have null protection domain.
// --> see ArrayKlass::complete_create_array_klass()
! ArrayKlass::cast(array_klasses())->restore_unshareable_info(ClassLoaderData::the_null_class_loader_data(), Handle(), CHECK);
}
// Initialize current biased locking state.
if (UseBiasedLocking && BiasedLocking::enabled()) {
set_prototype_header(markWord::biased_locking_prototype());
*** 2655,2681 ****
// Class is in an unnamed package, return its loader's unnamed module
return class_loader_data()->unnamed_module();
}
! void InstanceKlass::set_package(ClassLoaderData* loader_data, TRAPS) {
// ensure java/ packages only loaded by boot or platform builtin loaders
check_prohibited_package(name(), loader_data, CHECK);
! TempNewSymbol pkg_name = ClassLoader::package_from_class_name(name());
if (pkg_name != NULL && loader_data != NULL) {
// Find in class loader's package entry table.
! _package_entry = loader_data->packages()->lookup_only(pkg_name);
// If the package name is not found in the loader's package
// entry table, it is an indication that the package has not
// been defined. Consider it defined within the unnamed module.
if (_package_entry == NULL) {
- ResourceMark rm(THREAD);
if (!ModuleEntryTable::javabase_defined()) {
// Before java.base is defined during bootstrapping, define all packages in
// the java.base module. If a non-java.base package is erroneously placed
// in the java.base module it will be caught later when java.base
--- 2656,2681 ----
// Class is in an unnamed package, return its loader's unnamed module
return class_loader_data()->unnamed_module();
}
! void InstanceKlass::set_package(ClassLoaderData* loader_data, PackageEntry* pkg_entry, TRAPS) {
// ensure java/ packages only loaded by boot or platform builtin loaders
check_prohibited_package(name(), loader_data, CHECK);
! TempNewSymbol pkg_name = pkg_entry != NULL ? pkg_entry->name() : ClassLoader::package_from_class_name(name());
if (pkg_name != NULL && loader_data != NULL) {
// Find in class loader's package entry table.
! _package_entry = pkg_entry != NULL ? pkg_entry : loader_data->packages()->lookup_only(pkg_name);
// If the package name is not found in the loader's package
// entry table, it is an indication that the package has not
// been defined. Consider it defined within the unnamed module.
if (_package_entry == NULL) {
if (!ModuleEntryTable::javabase_defined()) {
// Before java.base is defined during bootstrapping, define all packages in
// the java.base module. If a non-java.base package is erroneously placed
// in the java.base module it will be caught later when java.base
*** 2687,2696 ****
--- 2687,2697 ----
_package_entry = loader_data->packages()->lookup(pkg_name,
loader_data->unnamed_module());
}
// A package should have been successfully created
+ DEBUG_ONLY(ResourceMark rm(THREAD));
assert(_package_entry != NULL, "Package entry for class %s not found, loader %s",
name()->as_C_string(), loader_data->loader_name_and_id());
}
if (log_is_enabled(Debug, module)) {
< prev index next >