-
Bug
-
Resolution: Fixed
-
P2
-
11, 12
-
aarch64
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8215999 | 13 | Andrew Haley | P2 | Resolved | Fixed | b03 |
JDK-8216121 | 12.0.1 | Andrew Haley | P2 | Resolved | Fixed | master |
JDK-8256600 | 11.0.11-oracle | Dukebot | P2 | Closed | Fixed | b01 |
JDK-8219530 | 11.0.3 | Andrew Haley | P2 | Resolved | Fixed | master |
This test fails with the following error on AArch64 with -Xcomp or
tiered compilation:
Buffer overrun: ISO-8859-1 "\u8a8e"[0/1] => UNMAPPABLE[1] ""[0/19] -114
failures=1
Passed = 223410156, failed = 10000
STDERR:
java.lang.AssertionError: Some tests failed
at FindEncoderBugs.main(FindEncoderBugs.java:526)
The problem is caused by the encoder function for the ISO-8859-1
character set writing one extra character to the output array when it
encounters a character it can't encode.
This is implemented as an intrinisc on AArch64. But the intrinisic
doesn't excatly match the original Java code in ISO_8859_1.java:
@HotSpotIntrinsicCandidate
private static int implEncodeISOArray(char[] sa, int sp,
byte[] da, int dp, int len) {
int i = 0;
for (; i < len; i++) {
char c = sa[sp++];
if (c > '\u00FF') // (1)
break;
da[dp++] = (byte)c; // (2)
}
return i;
}
In the intrinsic code statements (1) and (2) are swapped.
tiered compilation:
Buffer overrun: ISO-8859-1 "\u8a8e"[0/1] => UNMAPPABLE[1] ""[0/19] -114
failures=1
Passed = 223410156, failed = 10000
STDERR:
java.lang.AssertionError: Some tests failed
at FindEncoderBugs.main(FindEncoderBugs.java:526)
The problem is caused by the encoder function for the ISO-8859-1
character set writing one extra character to the output array when it
encounters a character it can't encode.
This is implemented as an intrinisc on AArch64. But the intrinisic
doesn't excatly match the original Java code in ISO_8859_1.java:
@HotSpotIntrinsicCandidate
private static int implEncodeISOArray(char[] sa, int sp,
byte[] da, int dp, int len) {
int i = 0;
for (; i < len; i++) {
char c = sa[sp++];
if (c > '\u00FF') // (1)
break;
da[dp++] = (byte)c; // (2)
}
return i;
}
In the intrinsic code statements (1) and (2) are swapped.
- backported by
-
JDK-8215999 AArch64: jtreg test test/jdk/sun/nio/cs/FindEncoderBugs.java fails
-
- Resolved
-
-
JDK-8216121 AArch64: jtreg test test/jdk/sun/nio/cs/FindEncoderBugs.java fails
-
- Resolved
-
-
JDK-8219530 AArch64: jtreg test test/jdk/sun/nio/cs/FindEncoderBugs.java fails
-
- Resolved
-
-
JDK-8256600 AArch64: jtreg test test/jdk/sun/nio/cs/FindEncoderBugs.java fails
-
- Closed
-
- relates to
-
JDK-8262900 ToolBasicTest fails to access HTTP server it starts
-
- Resolved
-