< prev index next >
src/java.base/share/classes/jdk/internal/module/ArchivedModuleGraph.java
Print this page
rev 57943 : 8237878: Improve ModuleLoaderMap datastructures
Reviewed-by: alanb
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -37,30 +37,30 @@
* Used by ModuleBootstrap to obtain the archived system modules and finder.
*/
final class ArchivedModuleGraph {
private static ArchivedModuleGraph archivedModuleGraph;
- private final String mainModule;
private final boolean hasSplitPackages;
private final boolean hasIncubatorModules;
private final ModuleFinder finder;
private final Configuration configuration;
+ private final ModuleLoaderMap.Mapper classLoaderFunction;
private final Map<String, Set<String>> concealedPackagesToOpen;
private final Map<String, Set<String>> exportedPackagesToOpen;
- private ArchivedModuleGraph(String mainModule,
- boolean hasSplitPackages,
+ public ArchivedModuleGraph(boolean hasSplitPackages,
boolean hasIncubatorModules,
ModuleFinder finder,
Configuration configuration,
+ ModuleLoaderMap.Mapper classLoaderFunction,
Map<String, Set<String>> concealedPackagesToOpen,
Map<String, Set<String>> exportedPackagesToOpen) {
- this.mainModule = mainModule;
this.hasSplitPackages = hasSplitPackages;
this.hasIncubatorModules = hasIncubatorModules;
this.finder = finder;
this.configuration = configuration;
+ this.classLoaderFunction = classLoaderFunction;
this.concealedPackagesToOpen = concealedPackagesToOpen;
this.exportedPackagesToOpen = exportedPackagesToOpen;
}
ModuleFinder finder() {
@@ -69,10 +69,14 @@
Configuration configuration() {
return configuration;
}
+ ModuleLoaderMap.Mapper classLoaderFunction() {
+ return classLoaderFunction;
+ }
+
Map<String, Set<String>> concealedPackagesToOpen() {
return concealedPackagesToOpen;
}
Map<String, Set<String>> exportedPackagesToOpen() {
@@ -90,37 +94,23 @@
/**
* Returns the ArchivedModuleGraph for the given initial module.
*/
static ArchivedModuleGraph get(String mainModule) {
ArchivedModuleGraph graph = archivedModuleGraph;
- if (graph != null && Objects.equals(mainModule, graph.mainModule)) {
+ // We only allow the unnamed module (default) case for now
+ if (mainModule == null) {
return graph;
} else {
return null;
}
}
/**
* Archive the module graph for the given initial module.
*/
- static void archive(String mainModule,
- boolean hasSplitPackages,
- boolean hasIncubatorModules,
- ModuleFinder finder,
- Configuration configuration,
- Map<String, Set<String>> concealedPackagesToOpen,
- Map<String, Set<String>> exportedPackagesToOpen) {
- if (mainModule != null) {
- throw new UnsupportedOperationException();
- }
- archivedModuleGraph = new ArchivedModuleGraph(mainModule,
- hasSplitPackages,
- hasIncubatorModules,
- finder,
- configuration,
- concealedPackagesToOpen,
- exportedPackagesToOpen);
+ static void archive(ArchivedModuleGraph graph) {
+ archivedModuleGraph = graph;
}
static {
VM.initializeFromArchive(ArchivedModuleGraph.class);
}
< prev index next >