RFR: 8340232: Optimize DataInputStream::readUTF

Chen Liang liach at openjdk.org
Tue Sep 17 03:29:31 UTC 2024


On Sun, 8 Sep 2024 07:52:26 GMT, Shaojin Wen <swen at openjdk.org> wrote:

> Similar to ObjectInputStream, use JLA.countPositives and JLA.inflateBytesToChars to speed up readUTF

Thanks for the logical cleanup. I will find another io reviewer too.

Another comment: we currently eagerly allocate a char array, but now we can choose to only allocate the char array if we have non-ascii.

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

> 588:         if (bytearr == null) {
> 589:             bytearr = new byte[utflen];
> 590:             allocate = true;

Can we rename this boolean to `trusted` and set it to `false` when we assign it back to `dis.bytearr`? Even though that assignment will be redundant, calling it `trusted` is helpful to avoid causing security problems if we reorganize this code in the future.

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

> 607:         }
> 608:         if (allocate && in instanceof DataInputStream dis) {
> 609:             dis.bytearr = bytearr;

Continuing last comment: after rename to `trusted`, add something like `trusted = false` here.

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

Marked as reviewed by liach (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/20903#pullrequestreview-2308109688
PR Comment: https://git.openjdk.org/jdk/pull/20903#issuecomment-2336657443
PR Review Comment: https://git.openjdk.org/jdk/pull/20903#discussion_r1761126286
PR Review Comment: https://git.openjdk.org/jdk/pull/20903#discussion_r1761127156


More information about the core-libs-dev mailing list