Description
Consider the following code that exercises AtomLong compare and swap operations:
AtomicLong atomLong = new AtomicLong(1);
System.out.println(atomLong.get());
System.out.println("CAS 1,-4 = " + atomLong.compareAndSet(1, -4));
System.out.println(atomLong.get());
System.out.println("CAS -5,1 = " + atomLong.compareAndSet(-5, 1));
System.out.println(atomLong.get());
I expect it to print out:
1
CAS 1,-4 = true
-4
CAS -5,1 = false
-4
Since the comparison of --4 and -5 fails.
However when running that code on harmony r761319 I see
1
CAS 1,-4 = true
-4
CAS -5,1 = true
-4
i.e. the swap is not done, but the method returned true as though it had done the swap.