Skip to content

Commit a9d7a4b

Browse files
mur47x111zapster
authored andcommitted
Rescan the StableSuppliers BaseLocale.CACHE and Locale.LOCALE_CACHE
1 parent e8d42b7 commit a9d7a4b

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/localization/LocalizationFeature.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ public class LocalizationFeature implements InternalFeature {
158158

159159
private Function<String, Class<?>> findClassByName;
160160

161+
private Field baseLocaleCacheField;
162+
private Field localeCacheField;
161163
private Field candidatesCacheField;
162164
private Field langAliasesCacheField;
163165
private Field parentLocalesMapField;
@@ -288,6 +290,8 @@ public void duringSetup(DuringSetupAccess a) {
288290
langAliasesCacheField = access.findField(CLDRLocaleProviderAdapter.class, "langAliasesCache");
289291
parentLocalesMapField = access.findField(CLDRLocaleProviderAdapter.class, "parentLocalesMap");
290292
candidatesCacheField = access.findField("java.util.ResourceBundle$Control", "CANDIDATES_CACHE");
293+
baseLocaleCacheField = access.findField("sun.util.locale.BaseLocale", "CACHE");
294+
localeCacheField = access.findField("java.util.Locale", "LOCALE_CACHE");
291295

292296
String reason = "All ResourceBundleControlProvider that are registered as services end up as objects in the image heap, and are therefore registered to be initialized at image build time";
293297
ServiceLoader.load(ResourceBundleControlProvider.class).stream()
@@ -339,6 +343,9 @@ public void beforeAnalysis(BeforeAnalysisAccess access) {
339343
@Override
340344
public void duringAnalysis(DuringAnalysisAccess a) {
341345
DuringAnalysisAccessImpl access = (DuringAnalysisAccessImpl) a;
346+
347+
access.rescanRoot(baseLocaleCacheField);
348+
access.rescanRoot(localeCacheField);
342349
access.rescanRoot(candidatesCacheField);
343350
access.rescanRoot(langAliasesCacheField);
344351
access.rescanRoot(parentLocalesMapField);

0 commit comments

Comments
 (0)