Skip to content

Commit f99b2be

Browse files
committed
[GR-63360] Ignore precomputed lambda forms from -H:Preserve=all
PullRequest: graal/20373
2 parents 25e45b7 + d89749d commit f99b2be

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/SubstrateOptions.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1328,6 +1328,12 @@ public enum ReportingMode {
13281328
@Option(help = "file:doc-files/PreserveHelp.txt")//
13291329
public static final HostedOptionKey<AccumulatingLocatableMultiOptionValue.Strings> Preserve = new HostedOptionKey<>(AccumulatingLocatableMultiOptionValue.Strings.build());
13301330

1331+
@Option(help = "file:doc-files/PreserveHelp.txt")//
1332+
public static final HostedOptionKey<AccumulatingLocatableMultiOptionValue.Strings> IgnorePreserveForClasses = new HostedOptionKey<>(AccumulatingLocatableMultiOptionValue.Strings.build());
1333+
1334+
@Option(help = "file:doc-files/PreserveHelp.txt")//
1335+
public static final HostedOptionKey<AccumulatingLocatableMultiOptionValue.Strings> IgnorePreserveForClassesPaths = new HostedOptionKey<>(AccumulatingLocatableMultiOptionValue.Strings.build());
1336+
13311337
@Option(help = "Force include include all public types and methods that can be reached using normal Java access rules.")//
13321338
public static final HostedOptionKey<Boolean> UseBaseLayerInclusionPolicy = new HostedOptionKey<>(false);
13331339

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,8 +1096,11 @@ protected void setupNativeImage(String imageName, OptionValues options, Map<Meth
10961096
loader.classLoaderSupport.getClassesToIncludeUnconditionally().forEach(cls -> bb.registerTypeForBaseImage(cls));
10971097

10981098
var runtimeReflection = ImageSingletons.lookup(RuntimeReflectionSupport.class);
1099+
1100+
var classesToIgnore = OptionClassFilterBuilder.createFilter(loader, SubstrateOptions.IgnorePreserveForClasses, SubstrateOptions.IgnorePreserveForClassesPaths);
10991101
loader.classLoaderSupport.getClassesToPreserve().parallel()
11001102
.filter(ClassInclusionPolicy::isClassIncludedBase)
1103+
.filter(c -> classesToIgnore.isIncluded(c) == null)
11011104
.forEach(c -> runtimeReflection.registerClassFully(ConfigurationCondition.alwaysTrue(), c));
11021105
for (String className : loader.classLoaderSupport.getClassNamesToPreserve()) {
11031106
RuntimeReflection.registerClassLookup(className);

0 commit comments

Comments
 (0)