On Fri, 25 Feb 2022 19:58:13 GMT, Brian Burkhalter <[email protected]> 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