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