8176472: Lazily create ModuleEntryTable

Moved the unnamed module out of the ModuleEntryTable and into the ClassLoaderData so that the MET can be lazily created only when other modules are present. Also a smaller PackageTable size.

Reviewed-by: gtriantafill, hseigel, lfoltan, coleenp
This commit is contained in:
Rachel Protacio 2017-04-18 13:19:42 -04:00
parent 2327609d91
commit ca72444bf9
9 changed files with 112 additions and 57 deletions

View file

@ -2257,9 +2257,9 @@ ModuleEntry* InstanceKlass::module() const {
}
const Klass* host = host_klass();
if (host == NULL) {
return class_loader_data()->modules()->unnamed_module();
return class_loader_data()->unnamed_module();
}
return host->class_loader_data()->modules()->unnamed_module();
return host->class_loader_data()->unnamed_module();
}
void InstanceKlass::set_package(ClassLoaderData* loader_data, TRAPS) {
@ -2289,9 +2289,9 @@ void InstanceKlass::set_package(ClassLoaderData* loader_data, TRAPS) {
assert(ModuleEntryTable::javabase_moduleEntry() != NULL, JAVA_BASE_NAME " module is NULL");
_package_entry = loader_data->packages()->lookup(pkg_name, ModuleEntryTable::javabase_moduleEntry());
} else {
assert(loader_data->modules()->unnamed_module() != NULL, "unnamed module is NULL");
assert(loader_data->unnamed_module() != NULL, "unnamed module is NULL");
_package_entry = loader_data->packages()->lookup(pkg_name,
loader_data->modules()->unnamed_module());
loader_data->unnamed_module());
}
// A package should have been successfully created