--- old/src/java.base/share/classes/java/lang/module/Configuration.java 2018-07-20 13:34:12.417197701 -0400 +++ new/src/java.base/share/classes/java/lang/module/Configuration.java 2018-07-20 13:34:11.053118388 -0400 @@ -42,8 +42,10 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import jdk.internal.misc.VM; import jdk.internal.module.ModuleReferenceImpl; import jdk.internal.module.ModuleTarget; +import jdk.internal.vm.annotation.Stable; /** * A configuration that is the result of @@ -104,7 +106,17 @@ public final class Configuration { // @see Configuration#empty() - private static final Configuration EMPTY_CONFIGURATION = new Configuration(); + // EMPTY_CONFIGURATION may be initialized from the CDS archive. + private static @Stable Configuration EMPTY_CONFIGURATION; + + static { + // Initialize EMPTY_CONFIGURATION from the archive. + VM.initializeFromArchive(Configuration.class); + // Create a new empty Configuration if there is no archived version. + if (EMPTY_CONFIGURATION == null) { + EMPTY_CONFIGURATION = new Configuration(); + } + } // parent configurations, in search order private final List parents;