RFR: 8370503: Use String.newStringWithLatin1Bytes to simplify Integer/Long toString method

Johannes Graham jgraham at openjdk.org
Thu Oct 23 14:29:31 UTC 2025


On Wed, 22 Oct 2025 06:28:34 GMT, Shaojin Wen <swen at openjdk.org> wrote:

> With the introduction of String.newStringWithLatin1Bytes, we can use it to simplify the toString methods of Integer and Long. By replacing the implementation that supports COMPACT_STRING = false with newStringWithLatin1Bytes, we gain the following benefits:
> 1. Simplified implementation
> 2. Strings with codeSize < 35 in Integer.toString(int) and Long.toString(long) can be inlined in C1, improving performance in early calls.

src/java.base/share/classes/java/lang/Integer.java line 366:

> 364:         int mag = Integer.SIZE - Integer.numberOfLeadingZeros(val);
> 365:         int chars = Math.max(((mag + (shift - 1)) / shift), 1);
> 366:         byte[] buf = new byte[chars];

Should the array size be `chars*2` in when compact strings is not in use?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27929#discussion_r2452880036


More information about the core-libs-dev mailing list