RFR: 8355992: Add unsignedMultiplyExact and *powExact methods to Math and StrictMath [v2]
Raffaello Giulietti
rgiulietti at openjdk.org
Fri May 2 17:57:48 UTC 2025
On Fri, 2 May 2025 17:26:21 GMT, fabioromano1 <duke at openjdk.org> wrote:
>> @fabioromano1 Well, there are two checks. In one the product can overflow, you'd need to convert one of the operands to `long`.
>>
>> Anyway, since the pre-checks are not precise, that would lead to an implementation with a loop with checked, and another one with unchecked multiplications. I don't think this buys you anything.
>
>> Anyway, since the pre-checks are not precise, that would lead to an implementation with a loop with checked, and another one with unchecked multiplications. I don't think this buys you anything.
>
> It serves to skip the checks in the loop if in the common cases the length of the results are way more little with respect to `Long.SIZE` and to fail fast if in the common cases the length of the results are way bigger than `Long.SIZE`.
>
>> @fabioromano1 Well, there are two checks. In one the product can overflow, you'd need to convert one of the operands to `long`.
>
> If the condition at point 1 is evaluated only if the condition at point 2 is false, then it can never overflow.
If that check would be a couple of instructions or so, then I could agree.
True, there are no overflows in the checks.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25003#discussion_r2071959063
More information about the core-libs-dev
mailing list