Skip to content

Commit 54d1a2f

Browse files
committed
[GR-62633] Preserve all "optimized-out" JDK components.
PullRequest: graal/21450
2 parents 0840d5d + ec67ec8 commit 54d1a2f

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/PreserveOptionsSupport.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,23 @@
2525
package com.oracle.svm.hosted.image;
2626

2727
import static com.oracle.graal.pointsto.api.PointstoOptions.UseConservativeUnsafeAccess;
28+
import static com.oracle.svm.core.SubstrateOptions.EnableURLProtocols;
2829
import static com.oracle.svm.core.SubstrateOptions.Preserve;
30+
import static com.oracle.svm.core.jdk.JRTSupport.Options.AllowJRTFileSystem;
31+
import static com.oracle.svm.hosted.SecurityServicesFeature.Options.AdditionalSecurityProviders;
32+
import static com.oracle.svm.hosted.jdk.localization.LocalizationFeature.Options.AddAllCharsets;
33+
import static com.oracle.svm.hosted.jdk.localization.LocalizationFeature.Options.IncludeAllLocales;
2934

3035
import java.lang.reflect.Constructor;
3136
import java.lang.reflect.Field;
3237
import java.lang.reflect.Method;
3338
import java.lang.reflect.Modifier;
39+
import java.security.Provider;
40+
import java.security.Security;
3441
import java.util.Arrays;
3542
import java.util.Comparator;
3643
import java.util.Set;
44+
import java.util.StringJoiner;
3745
import java.util.stream.Stream;
3846

3947
import org.graalvm.collections.EconomicMap;
@@ -139,7 +147,23 @@ public static void parsePreserveOption(EconomicMap<OptionKey<?>, Object> hostedV
139147
SubstrateOptionsParser.commandArgument(UseConservativeUnsafeAccess, "-"));
140148
}
141149
UseConservativeUnsafeAccess.update(hostedValues, true);
150+
151+
AddAllCharsets.update(hostedValues, true);
152+
IncludeAllLocales.update(hostedValues, true);
153+
AllowJRTFileSystem.update(hostedValues, true);
154+
EnableURLProtocols.update(hostedValues, "http,https,ftp,jar,file,mailto,jrt,jmod");
155+
AdditionalSecurityProviders.update(hostedValues, getSecurityProvidersCSV());
156+
}
157+
}
158+
159+
private static String getSecurityProvidersCSV() {
160+
StringJoiner joiner = new StringJoiner(",");
161+
for (Provider provider : Security.getProviders()) {
162+
Class<? extends Provider> aClass = provider.getClass();
163+
String typeName = aClass.getTypeName();
164+
joiner.add(typeName);
142165
}
166+
return joiner.toString();
143167
}
144168

145169
public static void registerPreservedClasses(NativeImageClassLoaderSupport classLoaderSupport) {

0 commit comments

Comments
 (0)