On Sat, 23 Aug 2025 04:06:13 GMT, Shaojin Wen <s...@openjdk.org> wrote:
> This PR introduces a new efficient API for appending two-digit integers to > StringBuilders and refactors DateTimeHelper to leverage this new > functionality. > > Changes include: > > 1. New `appendPair` method for efficient two-digit integer formatting (00-99): > - Added `AbstractStringBuilder.appendPair(int i)` with core implementation > - Added `JavaLangAccess.appendPair(StringBuilder, int)` for internal access > - Added `System.JavaLangAccessImpl.appendPair(StringBuilder, int)` bridge > - Added `DecimalDigits.appendPair(StringBuilder, int)` public static > utility method > - Enhanced Javadoc documentation for all new methods > > 2. Refactored `DateTimeHelper` to use the new `DecimalDigits.appendPair`: > - Updated `DateTimeHelper.formatTo` methods for `LocalDate` and `LocalTime` > - Replaced manual formatting logic with the new efficient two-digit > appending > - Improved code clarity and consistency in date/time formatting > > These changes improve code clarity and performance when formatting two-digit > numbers, particularly in date/time formatting scenarios. src/java.base/share/classes/java/lang/AbstractStringBuilder.java line 928: > 926: DecimalDigits.uncheckedPutPairLatin1(value, count, i); > 927: } else { > 928: DecimalDigits.uncheckedPutPairUTF16(value, count, i); I believe this is not covered by current tests, so could you please add the test if it's easy to reach? src/java.base/share/classes/jdk/internal/util/DecimalDigits.java line 455: > 453: * If the value is between 0 and 9, it is formatted with a leading > zero > 454: * (e.g., 5 becomes "05"). If the value is outside the range 0-99, > 455: * the behavior is unspecified. Just out of interest, why leave the behaviour as unspecified instead of validating and throwing an exception? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/26911#discussion_r2303663156 PR Review Comment: https://git.openjdk.org/jdk/pull/26911#discussion_r2303685649