Skip to content

Commit e63e806

Browse files
committed
Remove includedResourcesModules bookkeeping
1 parent 4380199 commit e63e806

File tree

3 files changed

+21
-25
lines changed

3 files changed

+21
-25
lines changed

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Resources.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@
3535
import java.util.Date;
3636
import java.util.Enumeration;
3737
import java.util.List;
38+
import java.util.Objects;
39+
import java.util.Set;
40+
import java.util.stream.Collectors;
41+
import java.util.stream.StreamSupport;
3842

3943
import com.oracle.svm.core.BuildPhaseProvider;
4044
import org.graalvm.collections.EconomicMap;
@@ -106,11 +110,19 @@ public static String moduleName(Module module) {
106110
return module == null ? null : module.getName();
107111
}
108112

109-
public static Pair<Module, String> createStorageKey(Module module, String resourceName) {
113+
private static Pair<Module, String> createStorageKey(Module module, String resourceName) {
110114
Module m = module != null && module.isNamed() ? module : null;
111115
return Pair.create(m, resourceName);
112116
}
113117

118+
public static Set<String> getIncludedResourcesModules() {
119+
return StreamSupport.stream(singleton().resources.getKeys().spliterator(), false)
120+
.map(Pair::getLeft)
121+
.filter(Objects::nonNull)
122+
.map(Module::getName)
123+
.collect(Collectors.toSet());
124+
}
125+
114126
public static byte[] inputStreamToByteArray(InputStream is) {
115127
try {
116128
return is.readAllBytes();

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ModuleLayerFeature.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import java.util.stream.Collectors;
5555
import java.util.stream.Stream;
5656

57+
import com.oracle.svm.core.jdk.Resources;
5758
import jdk.internal.module.DefaultRoots;
5859
import jdk.internal.module.ModuleBootstrap;
5960
import jdk.internal.module.SystemModuleFinders;
@@ -68,6 +69,8 @@
6869
import com.oracle.svm.core.util.VMError;
6970
import com.oracle.svm.util.ModuleSupport;
7071
import com.oracle.svm.util.ReflectionUtil;
72+
import org.graalvm.nativeimage.Platform;
73+
import org.graalvm.nativeimage.Platforms;
7174

7275
/**
7376
* This feature:
@@ -176,12 +179,7 @@ public void afterAnalysis(AfterAnalysisAccess access) {
176179
* is required when filtering the analysis reachable module set.
177180
*/
178181
Set<String> extraModules = ModuleLayerFeatureUtils.parseModuleSetModifierProperty(ModuleSupport.PROPERTY_IMAGE_EXPLICITLY_ADDED_MODULES);
179-
Set<String> includedResourceModules = ImageSingletons.lookup(ResourcesFeature.class).includedResourcesModules
180-
.stream()
181-
.map(Module::getName)
182-
.filter(Objects::nonNull)
183-
.collect(Collectors.toSet());
184-
extraModules.addAll(includedResourceModules);
182+
extraModules.addAll(Resources.getIncludedResourcesModules());
185183
extraModules.stream().filter(Predicate.not(ModuleSupport.nonExplicitModules::contains)).forEach(moduleName -> {
186184
Optional<?> module = accessImpl.imageClassLoader.findModule(moduleName);
187185
if (module.isEmpty()) {
@@ -540,6 +538,7 @@ private void patchRuntimeModuleLayer(ModuleLayer runtimeModuleLayer, Map<String,
540538
runtimeModuleLayer.modules();
541539
}
542540

541+
@Platforms(Platform.HOSTED_ONLY.class)
543542
private static final class ModuleLayerFeatureUtils {
544543
private final Map<ClassLoader, Map<String, Module>> runtimeModules;
545544
private final ImageClassLoader imageClassLoader;

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ResourcesFeature.java

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import java.util.Arrays;
3838
import java.util.Collection;
3939
import java.util.Collections;
40-
import java.util.HashSet;
4140
import java.util.List;
4241
import java.util.Locale;
4342
import java.util.Set;
@@ -47,7 +46,6 @@
4746
import java.util.concurrent.TimeUnit;
4847
import java.util.concurrent.atomic.LongAdder;
4948
import java.util.regex.Pattern;
50-
import java.util.stream.Collectors;
5149

5250
import org.graalvm.compiler.api.replacements.SnippetReflectionProvider;
5351
import org.graalvm.compiler.debug.DebugContext;
@@ -137,8 +135,6 @@ public static class Options {
137135
private int loadedConfigurations;
138136
private ImageClassLoader imageClassLoader;
139137

140-
public final Set<Module> includedResourcesModules = new HashSet<>();
141-
142138
private class ResourcesRegistryImpl extends ConditionalConfigurationRegistry implements ResourcesRegistry {
143139
private final ConfigurationTypeResolver configurationTypeResolver;
144140

@@ -228,7 +224,6 @@ private static final class ResourceCollectorImpl implements ResourceCollector {
228224
private final DebugContext debugContext;
229225
private final ResourcePattern[] includePatterns;
230226
private final ResourcePattern[] excludePatterns;
231-
private final Set<Module> includedResourcesModules;
232227

233228
private static final int WATCHDOG_RESET_AFTER_EVERY_N_RESOURCES = 1000;
234229
private static final int WATCHDOG_INITIAL_WARNING_AFTER_N_SECONDS = 60;
@@ -239,12 +234,10 @@ private static final class ResourceCollectorImpl implements ResourceCollector {
239234
private volatile String currentlyProcessedEntry;
240235
ScheduledExecutorService scheduledExecutor;
241236

242-
private ResourceCollectorImpl(DebugContext debugContext, ResourcePattern[] includePatterns, ResourcePattern[] excludePatterns, Set<Module> includedResourcesModules,
243-
Runnable heartbeatCallback) {
237+
private ResourceCollectorImpl(DebugContext debugContext, ResourcePattern[] includePatterns, ResourcePattern[] excludePatterns, Runnable heartbeatCallback) {
244238
this.debugContext = debugContext;
245239
this.includePatterns = includePatterns;
246240
this.excludePatterns = excludePatterns;
247-
this.includedResourcesModules = includedResourcesModules;
248241

249242
this.heartbeatCallback = heartbeatCallback;
250243
this.reachedResourceEntries = new LongAdder();
@@ -307,21 +300,13 @@ public boolean isIncluded(Module module, String resourceName, URI resource) {
307300

308301
@Override
309302
public void addResource(Module module, String resourceName, InputStream resourceStream, boolean fromJar) {
310-
collectModule(module);
311303
registerResource(debugContext, module, resourceName, resourceStream, fromJar);
312304
}
313305

314306
@Override
315307
public void addDirectoryResource(Module module, String dir, String content, boolean fromJar) {
316-
collectModule(module);
317308
registerDirectoryResource(debugContext, module, dir, content, fromJar);
318309
}
319-
320-
private void collectModule(Module module) {
321-
if (module != null && module.isNamed()) {
322-
includedResourcesModules.add(module);
323-
}
324-
}
325310
}
326311

327312
@Override
@@ -337,7 +322,7 @@ public void duringAnalysis(DuringAnalysisAccess access) {
337322
ResourcePattern[] includePatterns = compilePatterns(resourcePatternWorkSet);
338323
ResourcePattern[] excludePatterns = compilePatterns(excludedResourcePatterns);
339324
DebugContext debugContext = duringAnalysisAccess.getDebugContext();
340-
ResourceCollectorImpl collector = new ResourceCollectorImpl(debugContext, includePatterns, excludePatterns, includedResourcesModules, duringAnalysisAccess.bb.getHeartbeatCallback());
325+
ResourceCollectorImpl collector = new ResourceCollectorImpl(debugContext, includePatterns, excludePatterns, duringAnalysisAccess.bb.getHeartbeatCallback());
341326
try {
342327
collector.prepareProgressReporter();
343328
ImageSingletons.lookup(ClassLoaderSupport.class).collectResources(collector);
@@ -351,7 +336,7 @@ private ResourcePattern[] compilePatterns(Set<String> patterns) {
351336
return patterns.stream()
352337
.filter(s -> s.length() > 0)
353338
.map(this::makeResourcePattern)
354-
.collect(Collectors.toList())
339+
.toList()
355340
.toArray(new ResourcePattern[]{});
356341
}
357342

0 commit comments

Comments
 (0)