RFR: 8316704: Regex-free parsing of Formatter and FormatProcessor specifiers [v7]
温绍锦
duke at openjdk.org
Mon Sep 25 13:45:17 UTC 2023
On Mon, 25 Sep 2023 12:28:06 GMT, Claes Redestad <redestad at openjdk.org> wrote:
>> 温绍锦 has updated the pull request incrementally with one additional commit since the last revision:
>>
>> fix logic error
>
> src/java.base/share/classes/java/util/Formatter.java line 2949:
>
>> 2947: }
>> 2948: } else {
>> 2949: if (first == '0') {
>
> While it's clever to avoid re-parsing I think it muddies the control flow. It would be simpler if we always reset to `off = start; c = first` in this `else` block then unconditionally call `parseFlags(); parseWidth();` outside in `parse`. The few extra calls to `s.charAt(..)` this might add a little overhead on some tests, but the JIT might like the brevity and less branchy structure overall and on larger benchmarks.. Maybe worth experimenting with.
Good idea. In addition, I also plan to simplify the writing of the for statement, such as:
for (int size = 0; off < max; ++off, c = s.charAt(off), size++) {
==>
for (int size = 0; off < max; c = s.charAt(++off), size++) {
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/15776#discussion_r1335909991
More information about the core-libs-dev
mailing list