RFR 8162106 Remove VarHandle.addAndGet

Claes Redestad claes.redestad at oracle.com
Wed Aug 10 09:13:29 UTC 2016



On 2016-08-10 02:15, Paul Sandoz wrote:
> Hi,
>
> Please review the following webrev which removes VarHandle.addAndGet:
>
>    http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8162106-vhs-rm-addAndGet/webrev/ <http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8162106-vhs-rm-addAndGet/webrev/>

Changes look good in general, but unless I'm reading this wrong it seems 
some of the tests covered overflows previously, but no longer does so.

In:

http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8162106-vhs-rm-addAndGet/webrev/test/java/lang/invoke/VarHandles/X-VarHandleTestMethodHandleAccess.java.template.udiff.html

... instead of:

             $type$ o = ($type$) 
hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, $value2$);
             assertEquals(o, $value1$, "getAndAdd $type$");
             $type$ x = ($type$) 
hs.get(TestAccessMode.GET).invokeExact(recv);
             assertEquals(x, ($type$)($value1$ + $value2$), "getAndAdd 
$type$ value");

... consider doing something like this:

             $type$ o = ($type$) 
hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, $value2$);
             assertEquals(o, $value1$, "getAndAdd $type$");
             o = ($type$) 
hs.get(TestAccessMode.GET_AND_ADD).invokeExact(recv, $value2$);
             assertEquals(o, ($type$)($value1$ + $value2$), "getAndAdd 
$type$");
             $type$ x = ($type$) 
hs.get(TestAccessMode.GET).invokeExact(recv);
             assertEquals(x, ($type$)($value1$ + $value2$ + $value2$), 
"get $type$ value");

Thanks!

/Claes

>
> This turns out to be really just a helper method which is built upon getAndAdd.
>
> I had to update some classes in j.u.concurrent.atomics.








>
> Thanks,
> Paul.



More information about the core-libs-dev mailing list