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