RFR: 8336274: MutableBigInteger.leftShift(int) optimization [v9]
Raffaello Giulietti
rgiulietti at openjdk.org
Thu Sep 12 10:32:11 UTC 2024
On Wed, 11 Sep 2024 15:51:25 GMT, fabioromano1 <duke at openjdk.org> wrote:
>> This implementation of MutableBigInteger.leftShift(int) optimizes the current version, avoiding unnecessary copy of the MutableBigInteger's value content and performing the primitive shifting only in the original portion of the value array rather than in the value yet extended with trailing zeros.
>
> fabioromano1 has updated the pull request incrementally with one additional commit since the last revision:
>
> Use supported annotation by jtreg in tests
src/java.base/share/classes/java/math/MutableBigInteger.java line 709:
> 707: * Assumes that intLen > 0, n > 0 for speed
> 708: */
> 709: private final void primitiveRightShift(int n) {
Plz remove `final` from `private` primitive shift methods. (The `final`s were there long before your PR.)
src/java.base/share/classes/java/math/MutableBigInteger.java line 722:
> 720: * {@code (resPos <= offset || resPos >= offset + intLen)}.
> 721: */
> 722: private final void primitiveRightShift(int n, int[] result, int resPos) {
Suggestion:
private final void primitiveRightShift(int n, int[] result, int resOff) {
or something more similar to "offset".
Same for the left shift.
src/java.base/share/classes/java/math/MutableBigInteger.java line 753:
> 751: * {@code (resPos <= offset || resPos >= offset + intLen)}.
> 752: */
> 753: private final void primitiveLeftShift(int n, int[] result, int resPos) {
I think this method can be made more symmetrical w.r.t. `primitiveRightShift()` if starting from the right (least significant `int`).
test/jdk/java/math/BigInteger/MutableBigIntegerShiftTests.java line 49:
> 47:
> 48: static final int ORDER_SMALL = 60;
> 49: static final int ORDER_MEDIUM = 100;
Only now it occurs to me that these can be `private`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20008#discussion_r1756584630
PR Review Comment: https://git.openjdk.org/jdk/pull/20008#discussion_r1756587300
PR Review Comment: https://git.openjdk.org/jdk/pull/20008#discussion_r1756584738
PR Review Comment: https://git.openjdk.org/jdk/pull/20008#discussion_r1756584885
More information about the core-libs-dev
mailing list