On Fri, 25 Feb 2022 19:58:13 GMT, Brian Burkhalter <b...@openjdk.org> wrote:
>> Class: ./java.base/share/classes/jdk/internal/util/random/RandomSupport.java >> Method: public static long[] convertSeedBytesToLongs(byte[] seed, int n, int >> z) >> >> The method attempts to create an array of longs by consuming the input bytes >> most significant bit first. New bytes are appended to the existing long >> using the OR operator on the signed byte. Due to sign extension this will >> overwrite all the existing bits from 63 to 8 if the next byte is negative. > > test/jdk/java/util/Random/T8282144.java line 39: > >> 37: public class T8282144 { >> 38: public static void main(String[] args) { >> 39: RandomGenerator rng = >> RandomGeneratorFactory.of("L64X128MixRandom").create(42); > > Does `rng` always produce the same sequence? If so, then perhaps the seed, > `42`, should be a random value that is printed. 42 was chosen because its is known to produce negative byte values, other random values might not. > test/jdk/java/util/Random/T8282144.java line 52: > >> 50: for (int k = 0; k < existing.length; k++) { >> 51: if (existing[k] != testing[k]) { >> 52: throw new >> RuntimeException("convertSeedBytesToLongs incorrect"); > > Should `i`, `j`, and `k` be included in the exception message? Correctness is binary - either it works or it doesn't. The values of i, j, k would not assist in isolating issues. ------------- PR: https://git.openjdk.java.net/jdk/pull/7614