RFR: 8357063: Document preconditions for DecimalDigits methods [v2]

Volkan Yazici vyazici at openjdk.org
Fri May 16 13:29:55 UTC 2025


On Fri, 16 May 2025 09:45:43 GMT, Shaojin Wen <swen at openjdk.org> wrote:

>> Similar to PR #24982 
>> Document preconditions on certain DecimalDigits methods that use operations either unsafe and/or without range checks.
>
> Shaojin Wen has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - assert
>  - document add warnings

@wenshao, thanks for the kind effort – dropped suggestions to match the messages with the ones in JLA.

I prefer *all*<sup>1</sup> `public`, `unchecked`-prefixed `DecimalDigits` methods to start with a sufficient `assert` preamble, to fail as early as possible. Though I don't want to create redundant extra work, hence double checking: @jaikiran, @minborg, @liach, WDYT?

<sup>1</sup> Currently, only two `private` methods are introduced `assert`s, which are fine.

src/java.base/share/classes/jdk/internal/util/DecimalDigits.java line 147:

> 145:      * integer.
> 146:      * <p>
> 147:      * <b>WARNING: Used by trusted callers.  Assumes all necessary bounds checks have been done by the caller. </b>

Suggestion:

     * <b>WARNING: This method does not perform any bound checks. </b>

src/java.base/share/classes/jdk/internal/util/DecimalDigits.java line 198:

> 196:      * long.
> 197:      * <p>
> 198:      * <b>WARNING: Used by trusted callers.  Assumes all necessary bounds checks have been done by the caller. </b>

Suggestion:

     * <b>WARNING: This method does not perform any bound checks. </b>

src/java.base/share/classes/jdk/internal/util/DecimalDigits.java line 251:

> 249:      * UTF-16 coder.
> 250:      * <p>
> 251:      * <b>WARNING: Used by trusted callers.  Assumes all necessary bounds checks have been done by the caller. </b>

Suggestion:

     * <b>WARNING: This method does not perform any bound checks.</b>

src/java.base/share/classes/jdk/internal/util/DecimalDigits.java line 294:

> 292:      * UTF-16 coder.
> 293:      * <p>
> 294:      * <b>WARNING: Used by trusted callers.  Assumes all necessary bounds checks have been done by the caller. </b>

Suggestion:

     * <b>WARNING: This method does not perform any bound checks.</b>

src/java.base/share/classes/jdk/internal/util/DecimalDigits.java line 409:

> 407:      * only least significant 16 bits of {@code v} are used.
> 408:      * <p>
> 409:      * <b>WARNING: Used by trusted callers.  Assumes all necessary bounds checks have been done by the caller. </b>

Suggestion:

     * <b>WARNING: This method does not perform any bound checks.</b>

src/java.base/share/classes/jdk/internal/util/DecimalDigits.java line 440:

> 438:      * <p>
> 439:      * <b>WARNING: Used by trusted callers.  Assumes all necessary bounds checks have been done by the caller. </b>
> 440:      */

No need for this level of verbosity for private methods.

Suggestion:

src/java.base/share/classes/jdk/internal/util/DecimalDigits.java line 449:

> 447:      * <p>
> 448:      * <b>WARNING: Used by trusted callers.  Assumes all necessary bounds checks have been done by the caller. </b>
> 449:      */

No need for this level of verbosity for private methods.

Suggestion:

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

PR Review: https://git.openjdk.org/jdk/pull/25246#pullrequestreview-2846561005
PR Review Comment: https://git.openjdk.org/jdk/pull/25246#discussion_r2093002611
PR Review Comment: https://git.openjdk.org/jdk/pull/25246#discussion_r2093005955
PR Review Comment: https://git.openjdk.org/jdk/pull/25246#discussion_r2093006521
PR Review Comment: https://git.openjdk.org/jdk/pull/25246#discussion_r2093007264
PR Review Comment: https://git.openjdk.org/jdk/pull/25246#discussion_r2093009890
PR Review Comment: https://git.openjdk.org/jdk/pull/25246#discussion_r2093014576
PR Review Comment: https://git.openjdk.org/jdk/pull/25246#discussion_r2093015088


More information about the core-libs-dev mailing list