<i18n dev> RFR: 8302815 Use new Math.clamp method in core libraries [v3]

Pavel Rappo prappo at openjdk.org
Wed Feb 22 15:22:20 UTC 2023


On Tue, 21 Feb 2023 20:39:53 GMT, Tagir F. Valeev <tvaleev at openjdk.org> wrote:

>> For cleanup and dogfooding the new method, it would be nice to use Math.clamp where possible in java.base. See PR #12428.
>> 
>> As Math.clamp performs an additional check that min is not greater than max, I conservatively replaced only those occurrences where I can see that this invariant is always held. There are more occurrences, where clamp can be potentially used but it's unclear whether min <= max is always true.
>
> Tagir F. Valeev has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Update copyright year

I only saw this PR after it has been integrated. A code location that immediately came to mind but was missing in the change is this java/util/concurrent/SubmissionPublisher.java:1273:

       public final void request(long n) {
            if (n > 0L) {
                for (;;) {
                    long p = demand, d = p + n;  // saturate
                    if (casDemand(p, d < p ? Long.MAX_VALUE : d))
                        break;
                }
                startOnSignal(RUN | ACTIVE | REQS);
            }
            else
                onError(new IllegalArgumentException(
                            "non-positive subscription request"));
        }

Seems like a poster child for the new Math.clamp functionality.

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

PR: https://git.openjdk.org/jdk/pull/12633


More information about the i18n-dev mailing list