RFR: 8325340: Add ASCII fast-path to Data-/ObjectInputStream.readUTF

Raffaello Giulietti rgiulietti at openjdk.org
Wed Feb 14 10:44:03 UTC 2024


On Tue, 6 Feb 2024 16:17:21 GMT, Claes Redestad <redestad at openjdk.org> wrote:

> Adding a fast-path for ASCII-only modified UTF-8 strings deserialied via Data- and ObjectInputStream
> 
> Testing: tier1-3

src/java.base/share/classes/java/io/DataInputStream.java line 585:

> 583:         DataInputStream dis = null;
> 584:         if (in instanceof DataInputStream) {
> 585:             dis = (DataInputStream)in;

I guess that not making use of `instanceof` pattern matching is to enable backporting before JDK 16?

src/java.base/share/classes/java/io/DataInputStream.java line 604:

> 602:                 // For ASCII ISO-8859-1 is equivalent to UTF-8, while avoiding a redundant
> 603:                 // scan
> 604:                 return new String(bytearr, 0, utflen, StandardCharsets.ISO_8859_1);

Not sure this is correct.
If `bytearr` contains some `(byte)0`, that is, if `in` is malformed, this doesn't throw `UTFDataFormatException`, but it should: modified UTF-8 cannot contain zeros.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/17734#discussion_r1489261534
PR Review Comment: https://git.openjdk.org/jdk/pull/17734#discussion_r1489261783


More information about the nio-dev mailing list