--- a/src/java.base/share/classes/java/lang/StringLatin1.java Thu Oct 17 20:27:44 2019 +0100
+++ b/src/java.base/share/classes/java/lang/StringLatin1.java Thu Oct 17 20:53:35 2019 +0100
@@ -177,7 +177,7 @@
char c1 = getChar(value, k);
char c2 = StringUTF16.getChar(other, k);
if (c1 != c2) {
- c1 = Character.toUpperCase(c1);
+ c1 = (char) CharacterDataLatin1.instance.toUpperCase(c1);
c2 = Character.toUpperCase(c2);
if (c1 != c2) {
c1 = Character.toLowerCase(c1);
@@ -391,8 +391,8 @@
if (c1 == c2) {
continue;
}
- char u1 = Character.toUpperCase(c1);
- char u2 = Character.toUpperCase(c2);
+ int u1 = CharacterDataLatin1.instance.toUpperCase(c1);
+ int u2 = CharacterDataLatin1.instance.toUpperCase(c2);
if (u1 == u2) {
continue;
}
@@ -413,7 +413,7 @@
if (c1 == c2) {
continue;
}
- char u1 = Character.toUpperCase(c1);
+ char u1 = (char) CharacterDataLatin1.instance.toUpperCase(c1);
char u2 = Character.toUpperCase(c2);
if (u1 == u2) {
continue;
@@ -435,7 +435,7 @@
// Now check if there are any characters that need to be changed, or are surrogate
for (first = 0 ; first < len; first++) {
int cp = value[first] & 0xff;
- if (cp != Character.toLowerCase(cp)) { // no need to check Character.ERROR
+ if (cp != CharacterDataLatin1.instance.toLowerCase(cp)) { // no need to check Character.ERROR
break;
}
}
@@ -450,7 +450,7 @@
// lowerCase characters.
for (int i = first; i < len; i++) {
int cp = value[i] & 0xff;
- cp = Character.toLowerCase(cp);
+ cp = CharacterDataLatin1.instance.toLowerCase(cp);
if (!canEncode(cp)) { // not a latin1 character
return toLowerCaseEx(str, value, first, locale, false);
}
@@ -474,7 +474,7 @@
if (localeDependent) {
lowerChar = ConditionalSpecialCasing.toLowerCaseEx(str, i, locale);
} else {
- lowerChar = Character.toLowerCase(srcChar);
+ lowerChar = CharacterDataLatin1.instance.toLowerCase(srcChar);
}
if (Character.isBmpCodePoint(lowerChar)) { // Character.ERROR is not a bmp
StringUTF16.putChar(result, resultOffset++, lowerChar);
@@ -509,7 +509,7 @@
// Now check if there are any characters that need to be changed, or are surrogate
for (first = 0 ; first < len; first++ ) {
int cp = value[first] & 0xff;
- if (cp != Character.toUpperCaseEx(cp)) { // no need to check Character.ERROR
+ if (cp != CharacterDataLatin1.instance.toUpperCaseEx(cp)) { // no need to check Character.ERROR
break;
}
}
@@ -525,7 +525,7 @@
// upperCase characters.
for (int i = first; i < len; i++) {
int cp = value[i] & 0xff;
- cp = Character.toUpperCaseEx(cp);
+ cp = CharacterDataLatin1.instance.toUpperCaseEx(cp);
if (!canEncode(cp)) { // not a latin1 character
return toUpperCaseEx(str, value, first, locale, false);
}
@@ -549,7 +549,7 @@
if (localeDependent) {
upperChar = ConditionalSpecialCasing.toUpperCaseEx(str, i, locale);
} else {
- upperChar = Character.toUpperCaseEx(srcChar);
+ upperChar = CharacterDataLatin1.instance.toUpperCaseEx(srcChar);
}
if (Character.isBmpCodePoint(upperChar)) {
StringUTF16.putChar(result, resultOffset++, upperChar);
@@ -559,7 +559,7 @@
upperCharArray =
ConditionalSpecialCasing.toUpperCaseCharArray(str, i, locale);
} else {
- upperCharArray = Character.toUpperCaseCharArray(srcChar);
+ upperCharArray = CharacterDataLatin1.instance.toUpperCaseCharArray(srcChar);
}
} else {
upperCharArray = Character.toChars(upperChar);
@@ -597,7 +597,7 @@
int left = 0;
while (left < length) {
char ch = getChar(value, left);
- if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
+ if (ch != ' ' && ch != '\t' && !CharacterDataLatin1.instance.isWhitespace(ch)) {
break;
}
left++;
@@ -610,7 +610,7 @@
int right = length;
while (0 < right) {
char ch = getChar(value, right - 1);
- if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
+ if (ch != ' ' && ch != '\t' && !CharacterDataLatin1.instance.isWhitespace(ch)) {
break;
}
right--;
@@ -732,76 +732,10 @@
static LinesSpliterator spliterator(byte[] value) {
return new LinesSpliterator(value, 0, value.length);
}
-
- static LinesSpliterator spliterator(byte[] value, int leading, int trailing) {
- int length = value.length;
- int left = 0;
- int index;
- for (int l = 0; l < leading; l++) {
- index = skipBlankForward(value, left, length);
- if (index == left) {
- break;
- }
- left = index;
- }
- int right = length;
- for (int t = 0; t < trailing; t++) {
- index = skipBlankBackward(value, left, right);
- if (index == right) {
- break;
- }
- right = index;
- }
- return new LinesSpliterator(value, left, right - left);
- }
-
- private static int skipBlankForward(byte[] value, int start, int length) {
- int index = start;
- while (index < length) {
- char ch = getChar(value, index++);
- if (ch == '\n') {
- return index;
- }
- if (ch == '\r') {
- if (index < length && getChar(value, index) == '\n') {
- return index + 1;
- }
- return index;
- }
- if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
- return start;
- }
- }
- return length;
- }
-
- private static int skipBlankBackward(byte[] value, int start, int fence) {
- int index = fence;
- if (start < index && getChar(value, index - 1) == '\n') {
- index--;
- }
- if (start < index && getChar(value, index - 1) == '\r') {
- index--;
- }
- while (start < index) {
- char ch = getChar(value, --index);
- if (ch == '\r' || ch == '\n') {
- return index + 1;
- }
- if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
- return fence;
- }
- }
- return start;
- }
}
- static Stream<String> lines(byte[] value, int leading, int trailing) {
- if (leading == 0 && trailing == 0) {
- return StreamSupport.stream(LinesSpliterator.spliterator(value), false);
- } else {
- return StreamSupport.stream(LinesSpliterator.spliterator(value, leading, trailing), false);
- }
+ static Stream<String> lines(byte[] value) {
+ return StreamSupport.stream(LinesSpliterator.spliterator(value), false);
}
public static void putChar(byte[] val, int index, int c) {