Skip to content

Commit c91f994

Browse files
committed
Trace resource accesses
1 parent b6bc72f commit c91f994

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import com.oracle.svm.core.layeredimagesingleton.LayeredImageSingletonSupport;
7474
import com.oracle.svm.core.layeredimagesingleton.MultiLayeredImageSingleton;
7575
import com.oracle.svm.core.layeredimagesingleton.UnsavedSingleton;
76+
import com.oracle.svm.core.metadata.MetadataTracer;
7677
import com.oracle.svm.core.util.ImageHeapMap;
7778
import com.oracle.svm.core.util.VMError;
7879
import com.oracle.svm.util.GlobUtils;
@@ -401,6 +402,9 @@ public static ResourceStorageEntryBase getAtRuntime(Module module, String resour
401402
return null;
402403
}
403404
}
405+
if (MetadataTracer.Options.MetadataTracingSupport.getValue() && MetadataTracer.singleton().enabled()) {
406+
MetadataTracer.singleton().traceResource(resourceName, moduleName);
407+
}
404408
if (!entry.getConditions().satisfied()) {
405409
return missingMetadata(resourceName, throwOnMissing);
406410
}

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/localization/LocalizationSupport.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import com.oracle.svm.core.SubstrateUtil;
5858
import com.oracle.svm.core.configure.RuntimeConditionSet;
5959
import com.oracle.svm.core.jdk.Resources;
60+
import com.oracle.svm.core.metadata.MetadataTracer;
6061
import com.oracle.svm.core.util.ImageHeapMap;
6162
import com.oracle.svm.core.util.VMError;
6263
import com.oracle.svm.util.ReflectionUtil;
@@ -293,6 +294,12 @@ public boolean isRegisteredBundleLookup(String baseName, Locale locale, Object c
293294
/* Those cases will throw a NullPointerException before any lookup */
294295
return true;
295296
}
296-
return registeredBundles.containsKey(baseName) && registeredBundles.get(baseName).satisfied();
297+
if (registeredBundles.containsKey(baseName)) {
298+
if (MetadataTracer.Options.MetadataTracingSupport.getValue() && MetadataTracer.singleton().enabled()) {
299+
MetadataTracer.singleton().traceResourceBundle(baseName);
300+
}
301+
return registeredBundles.get(baseName).satisfied();
302+
}
303+
return false;
297304
}
298305
}

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/metadata/MetadataTracer.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.graalvm.nativeimage.ImageSingletons;
3434
import org.graalvm.nativeimage.hosted.Feature;
3535

36+
import com.oracle.svm.configure.UnresolvedConfigurationCondition;
3637
import com.oracle.svm.configure.config.ConfigurationSet;
3738
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
3839
import com.oracle.svm.core.feature.InternalFeature;
@@ -72,6 +73,21 @@ public static MetadataTracer singleton() {
7273
return ImageSingletons.lookup(MetadataTracer.class);
7374
}
7475

76+
public boolean enabled() {
77+
VMError.guarantee(Options.MetadataTracingSupport.getValue());
78+
return config != null;
79+
}
80+
81+
public void traceResource(String resourceName, String moduleName) {
82+
assert enabled();
83+
config.getResourceConfiguration().addGlobPattern(UnresolvedConfigurationCondition.alwaysTrue(), resourceName, moduleName);
84+
}
85+
86+
public void traceResourceBundle(String baseName) {
87+
assert enabled();
88+
config.getResourceConfiguration().addBundle(UnresolvedConfigurationCondition.alwaysTrue(), baseName, List.of());
89+
}
90+
7591
private static void initialize() {
7692
assert Options.MetadataTracingSupport.getValue();
7793
MetadataTracer singleton = MetadataTracer.singleton();

0 commit comments

Comments
 (0)