> 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.
Shaojin Wen has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision: - Merge remote-tracking branch 'upstream/master' into int_get_chars_dedup_202411 - Merge remote-tracking branch 'upstream/master' into int_get_chars_dedup_202411 - Merge remote-tracking branch 'upstream/master' into int_get_chars_dedup_202411 - fix unsafe address overflow - add benchmark - remove comments, from @liach - Merge remote-tracking branch 'upstream/master' into int_get_chars_dedup_202410 - fix Helper - fix Helper - fix Helper - ... and 7 more: https://git.openjdk.org/jdk/compare/46d370a4...a05c2f5f ------------- Changes: - all: https://git.openjdk.org/jdk/pull/22023/files - new: https://git.openjdk.org/jdk/pull/22023/files/efa6e6b2..a05c2f5f Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=22023&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=22023&range=02-03 Stats: 99 lines in 10 files changed: 20 ins; 70 del; 9 mod Patch: https://git.openjdk.org/jdk/pull/22023.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/22023/head:pull/22023 PR: https://git.openjdk.org/jdk/pull/22023