Integrated: 8343962: [REDO] Move getChars to DecimalDigits

Shaojin Wen swen at openjdk.org
Sat Jan 25 03:15:55 UTC 2025


On Tue, 12 Nov 2024 01:25:16 GMT, Shaojin Wen <swen at openjdk.org> wrote:

> This PR is a resubmission after PR #21593 was rolled back, and the unsafe offset overflow issue has been fixed.
> 
> 1) Move getChars methods of StringLatin1 and StringUTF16 to DecimalDigits to reduce duplication.
> 
> 2) HexDigits and OctalDigits also include getCharsLatin1 and getCharsUTF16
> 
> 3) Putting these two methods into DecimalDigits can avoid the need to expose them in JavaLangAccess
> Eliminate duplicate code in BigDecimal
> 
> 4) This PR will improve the performance of Integer/Long.toString and StringBuilder.append(int/long) scenarios. This is because Unsafe.putByte is used to eliminate array bounds checks, and of course this elimination is safe. In previous versions, in Integer/Long.toString and StringBuilder.append(int/long) scenarios, -COMPACT_STRING performed better than +COMPACT_STRING. This is because StringUTF16.getChars uses StringUTF16.putChar, which is similar to Unsafe.putChar, and there is no bounds check.

This pull request has now been integrated.

Changeset: f446cefe
Author:    Shaojin Wen <swen at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/f446cefee0715da6532b68f65a5a15775e20945d
Stats:     761 lines in 12 files changed: 379 ins; 352 del; 30 mod

8343962: [REDO] Move getChars to DecimalDigits

Reviewed-by: redestad, rgiulietti

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

PR: https://git.openjdk.org/jdk/pull/22023


More information about the core-libs-dev mailing list