< 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 >