Skip to content

Commit cdf23cd

Browse files
committed
Avoid using ICU4J at image build time
1 parent 03cd692 commit cdf23cd

File tree

1 file changed

+21
-1
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/str

1 file changed

+21
-1
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/str/StringBuiltins.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,14 @@ static String doGeneric(Object self,
895895

896896
@TruffleBoundary
897897
private static String toLowerCase(String self) {
898+
if (ImageInfo.inImageBuildtimeCode()) {
899+
// Avoid initializing ICU4J in image build
900+
return self.toLowerCase();
901+
}
902+
return internalToLowerCase(self);
903+
}
904+
905+
private static String internalToLowerCase(String self) {
898906
return UCharacter.toLowerCase(Locale.ENGLISH, self);
899907
}
900908
}
@@ -1718,7 +1726,7 @@ static boolean doString(String self) {
17181726
}
17191727
for (int i = 0; i < self.length();) {
17201728
int codePoint = self.codePointAt(i);
1721-
if (!UCharacter.isLetterOrDigit(codePoint)) {
1729+
if (!isLetterOrDigit(codePoint)) {
17221730
return false;
17231731
}
17241732
i += Character.charCount(codePoint);
@@ -1733,6 +1741,18 @@ static boolean doGeneric(Object self,
17331741
}
17341742
}
17351743

1744+
private static boolean isLetterOrDigit(int codePoint) {
1745+
if (ImageInfo.inImageBuildtimeCode()) {
1746+
// Avoid initializing ICU4J in image build
1747+
return Character.isLetterOrDigit(codePoint);
1748+
}
1749+
return internalIsLetterOrDigit(codePoint);
1750+
}
1751+
1752+
private static boolean internalIsLetterOrDigit(int codePoint) {
1753+
return UCharacter.isLetterOrDigit(codePoint);
1754+
}
1755+
17361756
@Builtin(name = "isalpha", minNumOfPositionalArgs = 1)
17371757
@GenerateNodeFactory
17381758
abstract static class IsAlphaNode extends PythonUnaryBuiltinNode {

0 commit comments

Comments
 (0)