@@ -201,13 +201,15 @@ private void scanRuntimeBootLayerPrototype(BeforeAnalysisAccessImpl accessImpl)
201201 public void afterAnalysis (AfterAnalysisAccess access ) {
202202 AfterAnalysisAccessImpl accessImpl = (AfterAnalysisAccessImpl ) access ;
203203
204- Set <Module > runtimeImageNamedModules = accessImpl .getUniverse ().getTypes ()
204+ Set <Module > runtimeImageModules = accessImpl .getUniverse ().getTypes ()
205205 .stream ()
206206 .filter (ModuleLayerFeature ::typeIsReachable )
207207 .map (t -> t .getJavaClass ().getModule ())
208- .filter (Module ::isNamed )
209208 .collect (Collectors .toSet ());
210209
210+ Set <Module > runtimeImageNamedModules = runtimeImageModules .stream ().filter (Module ::isNamed ).collect (Collectors .toSet ());
211+ Set <Module > runtimeImageUnnamedModules = runtimeImageModules .stream ().filter (Predicate .not (Module ::isNamed )).collect (Collectors .toSet ());
212+
211213 /*
212214 * Parse explicitly added modules via --add-modules. This is done early as this information
213215 * is required when filtering the analysis reachable module set.
@@ -257,7 +259,7 @@ public void afterAnalysis(AfterAnalysisAccess access) {
257259 * Ensure that runtime modules have the same relations (i.e., reads, opens and exports) as
258260 * the originals.
259261 */
260- replicateVisibilityModifications (runtimeBootLayer , accessImpl , accessImpl .imageClassLoader , runtimeImageNamedModules );
262+ replicateVisibilityModifications (runtimeBootLayer , accessImpl , accessImpl .imageClassLoader , runtimeImageNamedModules , runtimeImageUnnamedModules );
261263 replicateNativeAccess (accessImpl , runtimeImageNamedModules );
262264 }
263265
@@ -461,26 +463,28 @@ private ModuleLayer synthesizeRuntimeModuleLayer(List<ModuleLayer> parentLayers,
461463 }
462464 }
463465
464- private void replicateVisibilityModifications (ModuleLayer runtimeBootLayer , AfterAnalysisAccessImpl accessImpl , ImageClassLoader cl , Set <Module > analysisReachableNamedModules ) {
466+ private void replicateVisibilityModifications (ModuleLayer runtimeBootLayer , AfterAnalysisAccessImpl accessImpl , ImageClassLoader cl , Set <Module > analysisReachableNamedModules , Set < Module > analysisReachableUnnamedModules ) {
465467 List <Module > applicationModules = findApplicationModules (runtimeBootLayer , cl .applicationModulePath ());
466468
467- Map <Module , Module > modulePairs = analysisReachableNamedModules
469+ Map <Module , Module > namedModulePairs = analysisReachableNamedModules
468470 .stream ()
469471 .collect (Collectors .toMap (m -> m , m -> moduleLayerFeatureUtils .getRuntimeModuleForHostedModule (m , false )));
470- modulePairs .put (moduleLayerFeatureUtils .allUnnamedModule , moduleLayerFeatureUtils .allUnnamedModule );
471- modulePairs .put (moduleLayerFeatureUtils .everyoneModule , moduleLayerFeatureUtils .everyoneModule );
472+ Map <Module , Module > unnamedModulePairs = analysisReachableUnnamedModules
473+ .stream ()
474+ .collect (Collectors .toMap (m -> m , m -> moduleLayerFeatureUtils .getRuntimeModuleForHostedModule (m , false )));
475+ unnamedModulePairs .put (moduleLayerFeatureUtils .allUnnamedModule , moduleLayerFeatureUtils .allUnnamedModule );
476+ unnamedModulePairs .put (moduleLayerFeatureUtils .everyoneModule , moduleLayerFeatureUtils .everyoneModule );
472477
473478 Module builderModule = ModuleLayerFeatureUtils .getBuilderModule ();
474479 assert builderModule != null ;
475480
476481 try {
477- for (Map .Entry <Module , Module > e1 : modulePairs .entrySet ()) {
482+ for (Map .Entry <Module , Module > e1 : namedModulePairs .entrySet ()) {
478483 Module hostedFrom = e1 .getKey ();
479- if (!hostedFrom .isNamed ()) {
480- continue ;
481- }
482484 Module runtimeFrom = e1 .getValue ();
483- for (Map .Entry <Module , Module > e2 : modulePairs .entrySet ()) {
485+ Set <Map .Entry <Module , Module >> allModules = new HashSet <>(namedModulePairs .entrySet ());
486+ allModules .addAll (unnamedModulePairs .entrySet ());
487+ for (Map .Entry <Module , Module > e2 : allModules ) {
484488 Module hostedTo = e2 .getKey ();
485489 if (hostedTo == hostedFrom ) {
486490 continue ;
0 commit comments