Skip to content

Commit 55e93bd

Browse files
committed
Do not use locale categories in AOT mode.
1 parent 3eafd13 commit 55e93bd

File tree

1 file changed

+57
-42
lines changed

1 file changed

+57
-42
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/LocaleModuleBuiltins.java

Lines changed: 57 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import com.oracle.graal.python.builtins.objects.dict.PDict;
5555
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
5656
import com.oracle.graal.python.runtime.exception.PythonErrorType;
57+
import com.oracle.truffle.api.TruffleOptions;
5758
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
5859
import com.oracle.truffle.api.dsl.Fallback;
5960
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
@@ -212,62 +213,76 @@ public abstract static class SetLocaleNode extends PythonBuiltinNode {
212213
@Specialization(guards = {"category >= 0", "category <= 6"})
213214
@TruffleBoundary
214215
public Object setLocale(int category, @SuppressWarnings("unused") PNone posixLocaleID) {
215-
Locale.Category displayCategory = Locale.Category.DISPLAY;
216-
Locale.Category formatCategory = Locale.Category.FORMAT;
217-
218-
switch (category) {
219-
case LC_COLLATE:
220-
case LC_CTYPE:
221-
case LC_MESSAGES:
222-
formatCategory = null;
223-
break;
224-
case LC_MONETARY:
225-
case LC_NUMERIC:
226-
case LC_TIME:
227-
displayCategory = null;
228-
break;
229-
case LC_ALL:
230-
default:
231-
}
232-
233216
Locale defaultLocale;
234-
if (displayCategory != null) {
235-
defaultLocale = Locale.getDefault(displayCategory);
217+
Locale.Category displayCategory = null;
218+
Locale.Category formatCategory = null;
219+
if (!TruffleOptions.AOT) {
220+
displayCategory = Locale.Category.DISPLAY;
221+
formatCategory = Locale.Category.FORMAT;
222+
223+
switch (category) {
224+
case LC_COLLATE:
225+
case LC_CTYPE:
226+
case LC_MESSAGES:
227+
formatCategory = null;
228+
break;
229+
case LC_MONETARY:
230+
case LC_NUMERIC:
231+
case LC_TIME:
232+
displayCategory = null;
233+
break;
234+
case LC_ALL:
235+
default:
236+
}
237+
if (displayCategory != null) {
238+
defaultLocale = Locale.getDefault(displayCategory);
239+
} else {
240+
defaultLocale = Locale.getDefault(formatCategory);
241+
}
236242
} else {
237-
defaultLocale = Locale.getDefault(formatCategory);
243+
defaultLocale = Locale.getDefault();
238244
}
245+
239246
return toPosix(defaultLocale);
240247
}
241248

242249
@SuppressWarnings("fallthrough")
243250
@Specialization(guards = {"category >= 0", "category <= 6"})
244251
@TruffleBoundary
245252
public Object setLocale(int category, String posixLocaleID) {
246-
Locale.Category displayCategory = Locale.Category.DISPLAY;
247-
Locale.Category formatCategory = Locale.Category.FORMAT;
248-
249-
switch (category) {
250-
case LC_COLLATE:
251-
case LC_CTYPE:
252-
case LC_MESSAGES:
253-
formatCategory = null;
254-
break;
255-
case LC_MONETARY:
256-
case LC_NUMERIC:
257-
case LC_TIME:
258-
displayCategory = null;
259-
break;
260-
case LC_ALL:
261-
default:
253+
Locale.Category displayCategory = null;
254+
Locale.Category formatCategory = null;
255+
if (!TruffleOptions.AOT) {
256+
displayCategory = Locale.Category.DISPLAY;
257+
formatCategory = Locale.Category.FORMAT;
258+
259+
switch (category) {
260+
case LC_COLLATE:
261+
case LC_CTYPE:
262+
case LC_MESSAGES:
263+
formatCategory = null;
264+
break;
265+
case LC_MONETARY:
266+
case LC_NUMERIC:
267+
case LC_TIME:
268+
displayCategory = null;
269+
break;
270+
case LC_ALL:
271+
default:
272+
}
262273
}
263274

264275
Locale newLocale = fromPosix(posixLocaleID);
265276
if (newLocale != null) {
266-
if (displayCategory != null) {
267-
Locale.setDefault(displayCategory, newLocale);
268-
}
269-
if (formatCategory != null) {
270-
Locale.setDefault(formatCategory, newLocale);
277+
if (!TruffleOptions.AOT) {
278+
if (displayCategory != null) {
279+
Locale.setDefault(displayCategory, newLocale);
280+
}
281+
if (formatCategory != null) {
282+
Locale.setDefault(formatCategory, newLocale);
283+
}
284+
} else {
285+
Locale.setDefault(newLocale);
271286
}
272287
} else {
273288
throw raise(PythonErrorType.ValueError, "unsupported locale setting");

0 commit comments

Comments
 (0)