2240 } else { 2241 if (name->utf8_length() <= 0) { 2242 return NULL; 2243 } 2244 ResourceMark rm; 2245 const char* package_name = ClassLoader::package_from_name((const char*) name->as_C_string()); 2246 if (package_name == NULL) { 2247 return NULL; 2248 } 2249 Symbol* pkg_name = SymbolTable::new_symbol(package_name, THREAD); 2250 return pkg_name; 2251 } 2252 } 2253 2254 ModuleEntry* InstanceKlass::module() const { 2255 if (!in_unnamed_package()) { 2256 return _package_entry->module(); 2257 } 2258 const Klass* host = host_klass(); 2259 if (host == NULL) { 2260 return class_loader_data()->modules()->unnamed_module(); 2261 } 2262 return host->class_loader_data()->modules()->unnamed_module(); 2263 } 2264 2265 void InstanceKlass::set_package(ClassLoaderData* loader_data, TRAPS) { 2266 2267 // ensure java/ packages only loaded by boot or platform builtin loaders 2268 Handle class_loader(THREAD, loader_data->class_loader()); 2269 check_prohibited_package(name(), class_loader, CHECK); 2270 2271 TempNewSymbol pkg_name = package_from_name(name(), CHECK); 2272 2273 if (pkg_name != NULL && loader_data != NULL) { 2274 2275 // Find in class loader's package entry table. 2276 _package_entry = loader_data->packages()->lookup_only(pkg_name); 2277 2278 // If the package name is not found in the loader's package 2279 // entry table, it is an indication that the package has not 2280 // been defined. Consider it defined within the unnamed module. 2281 if (_package_entry == NULL) { 2282 ResourceMark rm; 2283 2284 if (!ModuleEntryTable::javabase_defined()) { 2285 // Before java.base is defined during bootstrapping, define all packages in 2286 // the java.base module. If a non-java.base package is erroneously placed 2287 // in the java.base module it will be caught later when java.base 2288 // is defined by ModuleEntryTable::verify_javabase_packages check. 2289 assert(ModuleEntryTable::javabase_moduleEntry() != NULL, JAVA_BASE_NAME " module is NULL"); 2290 _package_entry = loader_data->packages()->lookup(pkg_name, ModuleEntryTable::javabase_moduleEntry()); 2291 } else { 2292 assert(loader_data->modules()->unnamed_module() != NULL, "unnamed module is NULL"); 2293 _package_entry = loader_data->packages()->lookup(pkg_name, 2294 loader_data->modules()->unnamed_module()); 2295 } 2296 2297 // A package should have been successfully created 2298 assert(_package_entry != NULL, "Package entry for class %s not found, loader %s", 2299 name()->as_C_string(), loader_data->loader_name()); 2300 } 2301 2302 if (log_is_enabled(Debug, modules)) { 2303 ResourceMark rm; 2304 ModuleEntry* m = _package_entry->module(); 2305 log_trace(modules)("Setting package: class: %s, package: %s, loader: %s, module: %s", 2306 external_name(), 2307 pkg_name->as_C_string(), 2308 loader_data->loader_name(), 2309 (m->is_named() ? m->name()->as_C_string() : UNNAMED_MODULE)); 2310 } 2311 } else { 2312 ResourceMark rm; 2313 log_trace(modules)("Setting package: class: %s, package: unnamed, loader: %s, module: %s", 2314 external_name(), | 2240 } else { 2241 if (name->utf8_length() <= 0) { 2242 return NULL; 2243 } 2244 ResourceMark rm; 2245 const char* package_name = ClassLoader::package_from_name((const char*) name->as_C_string()); 2246 if (package_name == NULL) { 2247 return NULL; 2248 } 2249 Symbol* pkg_name = SymbolTable::new_symbol(package_name, THREAD); 2250 return pkg_name; 2251 } 2252 } 2253 2254 ModuleEntry* InstanceKlass::module() const { 2255 if (!in_unnamed_package()) { 2256 return _package_entry->module(); 2257 } 2258 const Klass* host = host_klass(); 2259 if (host == NULL) { 2260 return class_loader_data()->unnamed_module(); 2261 } 2262 return host->class_loader_data()->unnamed_module(); 2263 } 2264 2265 void InstanceKlass::set_package(ClassLoaderData* loader_data, TRAPS) { 2266 2267 // ensure java/ packages only loaded by boot or platform builtin loaders 2268 Handle class_loader(THREAD, loader_data->class_loader()); 2269 check_prohibited_package(name(), class_loader, CHECK); 2270 2271 TempNewSymbol pkg_name = package_from_name(name(), CHECK); 2272 2273 if (pkg_name != NULL && loader_data != NULL) { 2274 2275 // Find in class loader's package entry table. 2276 _package_entry = loader_data->packages()->lookup_only(pkg_name); 2277 2278 // If the package name is not found in the loader's package 2279 // entry table, it is an indication that the package has not 2280 // been defined. Consider it defined within the unnamed module. 2281 if (_package_entry == NULL) { 2282 ResourceMark rm; 2283 2284 if (!ModuleEntryTable::javabase_defined()) { 2285 // Before java.base is defined during bootstrapping, define all packages in 2286 // the java.base module. If a non-java.base package is erroneously placed 2287 // in the java.base module it will be caught later when java.base 2288 // is defined by ModuleEntryTable::verify_javabase_packages check. 2289 assert(ModuleEntryTable::javabase_moduleEntry() != NULL, JAVA_BASE_NAME " module is NULL"); 2290 _package_entry = loader_data->packages()->lookup(pkg_name, ModuleEntryTable::javabase_moduleEntry()); 2291 } else { 2292 assert(loader_data->unnamed_module() != NULL, "unnamed module is NULL"); 2293 _package_entry = loader_data->packages()->lookup(pkg_name, 2294 loader_data->unnamed_module()); 2295 } 2296 2297 // A package should have been successfully created 2298 assert(_package_entry != NULL, "Package entry for class %s not found, loader %s", 2299 name()->as_C_string(), loader_data->loader_name()); 2300 } 2301 2302 if (log_is_enabled(Debug, modules)) { 2303 ResourceMark rm; 2304 ModuleEntry* m = _package_entry->module(); 2305 log_trace(modules)("Setting package: class: %s, package: %s, loader: %s, module: %s", 2306 external_name(), 2307 pkg_name->as_C_string(), 2308 loader_data->loader_name(), 2309 (m->is_named() ? m->name()->as_C_string() : UNNAMED_MODULE)); 2310 } 2311 } else { 2312 ResourceMark rm; 2313 log_trace(modules)("Setting package: class: %s, package: unnamed, loader: %s, module: %s", 2314 external_name(), |