< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page




2808     }
2809   }
2810 
2811   // Class is in a named package
2812   if (!in_unnamed_package()) {
2813     return _package_entry->module();
2814   }
2815 
2816   // Class is in an unnamed package, return its loader's unnamed module
2817   return class_loader_data()->unnamed_module();
2818 }
2819 
2820 void InstanceKlass::set_package(ClassLoaderData* loader_data, PackageEntry* pkg_entry, TRAPS) {
2821 
2822   // ensure java/ packages only loaded by boot or platform builtin loaders
2823   // not needed for shared class since CDS does not archive prohibited classes.
2824   if (!is_shared()) {
2825     check_prohibited_package(name(), loader_data, CHECK);
2826   }
2827 
2828   TempNewSymbol pkg_name = pkg_entry != NULL ? pkg_entry->name() : ClassLoader::package_from_class_name(name());










2829 
2830   if (pkg_name != NULL && loader_data != NULL) {
2831 
2832     // Find in class loader's package entry table.
2833     _package_entry = pkg_entry != NULL ? pkg_entry : loader_data->packages()->lookup_only(pkg_name);
2834 
2835     // If the package name is not found in the loader's package
2836     // entry table, it is an indication that the package has not
2837     // been defined. Consider it defined within the unnamed module.
2838     if (_package_entry == NULL) {
2839 
2840       if (!ModuleEntryTable::javabase_defined()) {
2841         // Before java.base is defined during bootstrapping, define all packages in
2842         // the java.base module.  If a non-java.base package is erroneously placed
2843         // in the java.base module it will be caught later when java.base
2844         // is defined by ModuleEntryTable::verify_javabase_packages check.
2845         assert(ModuleEntryTable::javabase_moduleEntry() != NULL, JAVA_BASE_NAME " module is NULL");
2846         _package_entry = loader_data->packages()->lookup(pkg_name, ModuleEntryTable::javabase_moduleEntry());
2847       } else {
2848         assert(loader_data->unnamed_module() != NULL, "unnamed module is NULL");




2808     }
2809   }
2810 
2811   // Class is in a named package
2812   if (!in_unnamed_package()) {
2813     return _package_entry->module();
2814   }
2815 
2816   // Class is in an unnamed package, return its loader's unnamed module
2817   return class_loader_data()->unnamed_module();
2818 }
2819 
2820 void InstanceKlass::set_package(ClassLoaderData* loader_data, PackageEntry* pkg_entry, TRAPS) {
2821 
2822   // ensure java/ packages only loaded by boot or platform builtin loaders
2823   // not needed for shared class since CDS does not archive prohibited classes.
2824   if (!is_shared()) {
2825     check_prohibited_package(name(), loader_data, CHECK);
2826   }
2827 
2828   // ClassLoader::package_from_class_name has already incremented the refcount of the symbol
2829   // it returns, so we need to decrement it when the current function exits.
2830   TempNewSymbol from_class_name =
2831       (pkg_entry != NULL) ? NULL : ClassLoader::package_from_class_name(name());
2832 
2833   Symbol* pkg_name;
2834   if (pkg_entry != NULL) {
2835     pkg_name = pkg_entry->name();
2836   } else {
2837     pkg_name = from_class_name;
2838   }
2839 
2840   if (pkg_name != NULL && loader_data != NULL) {
2841 
2842     // Find in class loader's package entry table.
2843     _package_entry = pkg_entry != NULL ? pkg_entry : loader_data->packages()->lookup_only(pkg_name);
2844 
2845     // If the package name is not found in the loader's package
2846     // entry table, it is an indication that the package has not
2847     // been defined. Consider it defined within the unnamed module.
2848     if (_package_entry == NULL) {
2849 
2850       if (!ModuleEntryTable::javabase_defined()) {
2851         // Before java.base is defined during bootstrapping, define all packages in
2852         // the java.base module.  If a non-java.base package is erroneously placed
2853         // in the java.base module it will be caught later when java.base
2854         // is defined by ModuleEntryTable::verify_javabase_packages check.
2855         assert(ModuleEntryTable::javabase_moduleEntry() != NULL, JAVA_BASE_NAME " module is NULL");
2856         _package_entry = loader_data->packages()->lookup(pkg_name, ModuleEntryTable::javabase_moduleEntry());
2857       } else {
2858         assert(loader_data->unnamed_module() != NULL, "unnamed module is NULL");


< prev index next >