RFR: 8356891: Some code simplifications for basic BigIntegers' bit operations [v6]
Shaojin Wen
swen at openjdk.org
Thu May 15 22:46:54 UTC 2025
On Thu, 15 May 2025 15:37:39 GMT, fabioromano1 <duke at openjdk.org> wrote:
>> Some changes in `Biginteger`s' bit operations that increase the code readability and slightly optimize the execution time.
>
> fabioromano1 has updated the pull request incrementally with one additional commit since the last revision:
>
> make magBitLength() an instance method
src/java.base/share/classes/java/math/BigInteger.java line 3860:
> 3858: && Integer.lowestOneBit(mag[0]) == mag[0]
> 3859: && numberOfTrailingZeroInts() == mag.length - 1
> 3860: ? magBitLength() - 1 : magBitLength();
Suggestion:
int[] mag = this.mag;
return magBitLength()
- (signum < 0
// Check if magnitude is a power of two
&& Integer.lowestOneBit(mag[0]) == mag[0]
&& numberOfTrailingZeroInts() == mag.length - 1
? 1 : 0);
In this way, codeSize will drop from 52 to 45
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25166#discussion_r2092060927
More information about the core-libs-dev
mailing list