RFR: 8212826: Make PtrQueue free list lock-free

Kim Barrett kim.barrett at oracle.com
Tue Jan 15 22:54:08 UTC 2019

> On Jan 15, 2019, at 9:13 AM, Thomas Schatzl <thomas.schatzl at oracle.com> wrote:
> Hi Kim,
> On Wed, 2019-01-09 at 16:48 -0500, Kim Barrett wrote:
>> CR:
>> https://bugs.openjdk.java.net/browse/JDK-8212826
>> Webrev:
>> http://cr.openjdk.java.net/~kbarrett/8212826/open.00/
> - ptrQueue.cpp:121:
> size_zero seems to be unused, and size_one can be avoided completely by
> using Atomic::inc/dec instead of add/sub which I would prefer.
> Even if you kept add/sub, hardcoding (size_t)1 would be less code than
> the constant declaration as there are not many uses.

Can’t use inc/dec, because the incremented values are used, and those functions
don’t return anything.  But it seems that I forgot that Erik and I managed to slip in
a bit of argument canonicalization here, so that an exact type match isn’t required;
just using ‘1u’ works.

> - test_ptrQueueBufferAllocator.cpp copyright should be "2018, 2019,"
> instead of just 2019.

Oops.  Fixed.

> - the gtest adds a small API for testing and comparison should be part
> of the test. It honestly seems to add nothing to the final test other
> than adding additional code, particularly because the other variants
> mentioned in the comment are not there. So I would prefer to flatten
> the FreeListPtrQueueBufferAllocator/FreeListPtrQueueBufferCompletedList
> classes.

Done, with a bit more cleanup.

> Looks good otherwise.


Note that I’ve filed a bug against Solaris Studio for the problem with
using pointers to data members. I’ll file a JDK RFE to change
LockFreeStack to the preferred form once the Solaris Studio bug is
fixed and we’re no longer supporting versions with the bug.

New webrevs:
full: http://cr.openjdk.java.net/~kbarrett/8212826/open.01/
incr: http://cr.openjdk.java.net/~kbarrett/8212826/open.01.inc/

More information about the hotspot-gc-dev mailing list