8290079: Reduce interaction with volatile in static initializer of BigInteger

Reviewed-by: jpai, rriggs, darcy
This commit is contained in:
Sergey Tsypanov 2022-07-13 19:36:50 +00:00 committed by Joe Darcy
parent 74ac5df96f
commit c83fcbd18f

View file

@ -1273,13 +1273,14 @@ public class BigInteger extends Number implements Comparable<BigInteger> {
* with just the very first value. Additional values will be created * with just the very first value. Additional values will be created
* on demand. * on demand.
*/ */
powerCache = new BigInteger[Character.MAX_RADIX+1][]; BigInteger[][] cache = new BigInteger[Character.MAX_RADIX+1][];
logCache = new double[Character.MAX_RADIX+1]; logCache = new double[Character.MAX_RADIX+1];
for (int i=Character.MIN_RADIX; i <= Character.MAX_RADIX; i++) { for (int i=Character.MIN_RADIX; i <= Character.MAX_RADIX; i++) {
powerCache[i] = new BigInteger[] { BigInteger.valueOf(i) }; cache[i] = new BigInteger[] { BigInteger.valueOf(i) };
logCache[i] = Math.log(i); logCache[i] = Math.log(i);
} }
BigInteger.powerCache = cache;
} }
/** /**