< prev index next >
src/java.base/share/classes/jdk/internal/module/ArchivedModuleGraph.java
Print this page
rev 52800 : 8214858: Improve module graph archiving
Reviewed-by: alanb
*** 25,96 ****
package jdk.internal.module;
import java.lang.module.Configuration;
import java.lang.module.ModuleFinder;
import java.util.Objects;
import jdk.internal.misc.VM;
/**
* Used by ModuleBootstrap to obtain the archived system modules and finder.
*/
final class ArchivedModuleGraph {
! private static String archivedMainModule;
! private static SystemModules archivedSystemModules;
! private static ModuleFinder archivedModuleFinder;
! private static Configuration archivedConfiguration;
! private final SystemModules systemModules;
private final ModuleFinder finder;
private final Configuration configuration;
! private ArchivedModuleGraph(SystemModules modules,
ModuleFinder finder,
! Configuration configuration) {
! this.systemModules = modules;
this.finder = finder;
this.configuration = configuration;
! }
!
! SystemModules systemModules() {
! return systemModules;
}
ModuleFinder finder() {
return finder;
}
Configuration configuration() {
return configuration;
}
! // A factory method that ModuleBootstrap can use to obtain the
! // ArchivedModuleGraph.
static ArchivedModuleGraph get(String mainModule) {
! if (Objects.equals(mainModule, archivedMainModule)
! && archivedSystemModules != null
! && archivedModuleFinder != null
! && archivedConfiguration != null) {
! return new ArchivedModuleGraph(archivedSystemModules,
! archivedModuleFinder,
! archivedConfiguration);
} else {
return null;
}
}
! // Used at CDS dump time
static void archive(String mainModule,
! SystemModules systemModules,
ModuleFinder finder,
! Configuration configuration) {
! if (archivedMainModule != null)
throw new UnsupportedOperationException();
! archivedMainModule = mainModule;
! archivedSystemModules = systemModules;
! archivedModuleFinder = finder;
! archivedConfiguration = configuration;
}
static {
VM.initializeFromArchive(ArchivedModuleGraph.class);
}
--- 25,126 ----
package jdk.internal.module;
import java.lang.module.Configuration;
import java.lang.module.ModuleFinder;
+ import java.util.Map;
import java.util.Objects;
+ import java.util.Set;
+
import jdk.internal.misc.VM;
/**
* 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 Map<String, Set<String>> concealedPackagesToOpen;
+ private final Map<String, Set<String>> exportedPackagesToOpen;
! private ArchivedModuleGraph(String mainModule,
! boolean hasSplitPackages,
! boolean hasIncubatorModules,
ModuleFinder finder,
! Configuration configuration,
! 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.concealedPackagesToOpen = concealedPackagesToOpen;
! this.exportedPackagesToOpen = exportedPackagesToOpen;
}
ModuleFinder finder() {
return finder;
}
Configuration configuration() {
return configuration;
}
! Map<String, Set<String>> concealedPackagesToOpen() {
! return concealedPackagesToOpen;
! }
!
! Map<String, Set<String>> exportedPackagesToOpen() {
! return exportedPackagesToOpen;
! }
!
! boolean hasSplitPackages() {
! return hasSplitPackages;
! }
!
! boolean hasIncubatorModules() {
! return hasIncubatorModules;
! }
!
! /**
! * Returns the ArchivedModuleGraph for the given initial module.
! */
static ArchivedModuleGraph get(String mainModule) {
! ArchivedModuleGraph graph = archivedModuleGraph;
! if (graph != null && Objects.equals(mainModule, graph.mainModule)) {
! 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 {
VM.initializeFromArchive(ArchivedModuleGraph.class);
}
< prev index next >