Skip to content

Commit ec67ec8

Browse files
committed
Preserve all "optimized-out" JDK components
1 parent 9be24ba commit ec67ec8

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;
@@ -137,7 +145,23 @@ public static void parsePreserveOption(EconomicMap<OptionKey<?>, Object> hostedV
137145
SubstrateOptionsParser.commandArgument(UseConservativeUnsafeAccess, "-"));
138146
}
139147
UseConservativeUnsafeAccess.update(hostedValues, true);
148+
149+
AddAllCharsets.update(hostedValues, true);
150+
IncludeAllLocales.update(hostedValues, true);
151+
AllowJRTFileSystem.update(hostedValues, true);
152+
EnableURLProtocols.update(hostedValues, "http,https,ftp,jar,file,mailto,jrt,jmod");
153+
AdditionalSecurityProviders.update(hostedValues, getSecurityProvidersCSV());
154+
}
155+
}
156+
157+
private static String getSecurityProvidersCSV() {
158+
StringJoiner joiner = new StringJoiner(",");
159+
for (Provider provider : Security.getProviders()) {
160+
Class<? extends Provider> aClass = provider.getClass();
161+
String typeName = aClass.getTypeName();
162+
joiner.add(typeName);
140163
}
164+
return joiner.toString();
141165
}
142166

143167
public static void registerPreservedClasses(NativeImageClassLoaderSupport classLoaderSupport) {

0 commit comments

Comments
 (0)