< 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 ****
/*
! * Copyright (c) 2018, 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
--- 1,7 ----
/*
! * 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,66 ****
* 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() {
--- 37,66 ----
* Used by ModuleBootstrap to obtain the archived system modules and finder.
*/
final class ArchivedModuleGraph {
private static ArchivedModuleGraph archivedModuleGraph;
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;
! public ArchivedModuleGraph(boolean hasSplitPackages,
boolean hasIncubatorModules,
ModuleFinder finder,
Configuration configuration,
+ ModuleLoaderMap.Mapper classLoaderFunction,
Map<String, Set<String>> concealedPackagesToOpen,
Map<String, Set<String>> exportedPackagesToOpen) {
this.hasSplitPackages = hasSplitPackages;
this.hasIncubatorModules = hasIncubatorModules;
this.finder = finder;
this.configuration = configuration;
+ this.classLoaderFunction = classLoaderFunction;
this.concealedPackagesToOpen = concealedPackagesToOpen;
this.exportedPackagesToOpen = exportedPackagesToOpen;
}
ModuleFinder finder() {
*** 69,78 ****
--- 69,82 ----
Configuration configuration() {
return configuration;
}
+ ModuleLoaderMap.Mapper classLoaderFunction() {
+ return classLoaderFunction;
+ }
+
Map<String, Set<String>> concealedPackagesToOpen() {
return concealedPackagesToOpen;
}
Map<String, Set<String>> exportedPackagesToOpen() {
*** 90,126 ****
/**
* 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);
}
--- 94,116 ----
/**
* Returns the ArchivedModuleGraph for the given initial module.
*/
static ArchivedModuleGraph get(String mainModule) {
ArchivedModuleGraph graph = archivedModuleGraph;
! // 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(ArchivedModuleGraph graph) {
! archivedModuleGraph = graph;
}
static {
VM.initializeFromArchive(ArchivedModuleGraph.class);
}
< prev index next >