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.