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