RFR: 8343962: [REDO] Move getChars to DecimalDigits [v6]
Shaojin Wen
swen at openjdk.org
Wed Dec 11 22:30:32 UTC 2024
> 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 19 additional commits since the last revision:
- Merge remote-tracking branch 'upstream/master' into int_get_chars_dedup_202411
- form @cl4es
- 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
- ... and 9 more: https://git.openjdk.org/jdk/compare/8b2b7bfe...8122c1bf
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/22023/files
- new: https://git.openjdk.org/jdk/pull/22023/files/72ff93f2..8122c1bf
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=22023&range=05
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=22023&range=04-05
Stats: 7630 lines in 2128 files changed: 4303 ins; 608 del; 2719 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
More information about the core-libs-dev
mailing list