RFR 8173083: VarHandle usages in LockSupport and ThreadLocalRandom result in circularity issues

Paul Sandoz paul.sandoz at oracle.com
Fri Jan 20 18:35:00 UTC 2017


> On 20 Jan 2017, at 09:54, Martin Buchholz <martinrb at google.com> wrote:
> 
>>> 
> (r = (long) SEED.get(t)) + GAMMA);
> =>
>  r = ((long) SEED.get(t)) + GAMMA);
> or I think you can just leave them out
>  r = (long) SEED.get(t) + GAMMA);
> 

Doh, yes i see now, cross eyed! either of those two is fine.

Thanks,
Paul.

> On Fri, Jan 20, 2017 at 9:48 AM, Paul Sandoz <paul.sandoz at oracle.com <mailto:paul.sandoz at oracle.com>> wrote:
> 
>> On 20 Jan 2017, at 09:45, Martin Buchholz <martinrb at google.com <mailto:martinrb at google.com>> wrote:
>> 
>> 
>> 
>> On Fri, Jan 20, 2017 at 7:58 AM, Paul Sandoz <paul.sandoz at oracle.com <mailto:paul.sandoz at oracle.com>> wrote:
>> 
>>> I was surprised to see below a change in parentheses that seems to change the behavior.
>>> 
>>>      final long nextSeed() {
>>>          Thread t; long r; // read and update per-thread seed
>>> -        SEED.set(t = Thread.currentThread(),
>>> -                 (r = (long) SEED.get(t)) + GAMMA);
>>> +        U.putLong(t = Thread.currentThread(), SEED,
>>> +                  r = U.getLong(t, SEED) + GAMMA);
>>>          return r;
>>>      }
>> 
>> The update reverted to the previous code:
>> 
>> http://hg.openjdk.java.net/jdk9/dev/jdk/file/7901a13a051c/src/java.base/share/classes/java/util/concurrent/ThreadLocalRandom.java <http://hg.openjdk.java.net/jdk9/dev/jdk/file/7901a13a051c/src/java.base/share/classes/java/util/concurrent/ThreadLocalRandom.java>
>> 
>> I added the parentheses to bound the cast.
>> 
>> It still looks to me like the parenthesis got added to the wrong place (in the previous changeset!),
> 
> What place do you think they should be?
> 
> Paul.
> 



More information about the core-libs-dev mailing list