< prev index next >

src/hotspot/share/classfile/modules.cpp

Print this page

        

*** 310,319 **** --- 310,323 ---- if (loader != java_lang_ClassLoader::non_reflection_class_loader(loader)) { THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "Class loader is an invalid delegating class loader"); } Handle h_loader = Handle(THREAD, loader); + // define_module can be called during start-up, before the class loader's ClassLoaderData + // has been created. SystemDictionary::register_loader ensures creation, if needed. + ClassLoaderData* loader_data = SystemDictionary::register_loader(h_loader); + assert(loader_data != NULL, "class loader data shouldn't be null"); // Check that the list of packages has no duplicates and that the // packages are syntactically ok. GrowableArray<Symbol*>* pkg_list = new GrowableArray<Symbol*>(num_packages); for (int x = 0; x < num_packages; x++) {
*** 327,337 **** // Only modules defined to either the boot or platform class loader, can define a "java/" package. if (!h_loader.is_null() && !SystemDictionary::is_platform_class_loader(h_loader()) && (strncmp(package_name, JAVAPKG, JAVAPKG_LEN) == 0 && (package_name[JAVAPKG_LEN] == '/' || package_name[JAVAPKG_LEN] == '\0'))) { ! const char* class_loader_name = SystemDictionary::loader_name(h_loader()); size_t pkg_len = strlen(package_name); char* pkg_name = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, pkg_len); strncpy(pkg_name, package_name, pkg_len); StringUtils::replace_no_expand(pkg_name, "/", "."); const char* msg_text1 = "Class loader (instance of): "; --- 331,341 ---- // Only modules defined to either the boot or platform class loader, can define a "java/" package. if (!h_loader.is_null() && !SystemDictionary::is_platform_class_loader(h_loader()) && (strncmp(package_name, JAVAPKG, JAVAPKG_LEN) == 0 && (package_name[JAVAPKG_LEN] == '/' || package_name[JAVAPKG_LEN] == '\0'))) { ! const char* class_loader_name = loader_data->loader_name(); size_t pkg_len = strlen(package_name); char* pkg_name = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, pkg_len); strncpy(pkg_name, package_name, pkg_len); StringUtils::replace_no_expand(pkg_name, "/", "."); const char* msg_text1 = "Class loader (instance of): ";
*** 371,383 **** if (module_location != NULL) { location_symbol = SymbolTable::new_symbol(module_location, CHECK); } } - ClassLoaderData* loader_data = ClassLoaderData::class_loader_data_or_null(h_loader()); - assert(loader_data != NULL, "class loader data shouldn't be null"); - PackageEntryTable* package_table = NULL; PackageEntry* existing_pkg = NULL; { MutexLocker ml(Module_lock, THREAD); --- 375,384 ----
< prev index next >