RFR: 8132984: incorrect type for Reference.discovered [v3]

Mandy Chung mchung at openjdk.java.net
Tue Jan 19 17:59:49 UTC 2021


On Mon, 18 Jan 2021 23:42:08 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

>> Please review this change which fixes the type of the private
>> Reference.discovered field.  It was Reference<T>, but that's wrong because
>> it can be any Reference object.
>> 
>> I've changed it to Reference<?> and let that flow through, updating some
>> other variables that were previously somewhat incorrectly typed (usually
>> with an Object type parameter). The interesting change is to the
>> ReferenceQueue.enqueue parameter, which is now also Reference<?>.
>> 
>> This ultimately end up with a provably safe and correct, but uncheckable,
>> cast in ReferenceQueue.enqueue.
>> 
>> An alternative might be to use a raw type for the discovered field, but I
>> think that ends up with more @SuppressWarnings of various flavors.  I think
>> the unbounded wildcard approach is clearer and cleaner.
>> 
>> Note that all of the pending list handling, including the discovered field,
>> could be moved into a non-public, non-generic, sealed(?) base class of
>> Reference<T>.  The pending list handling has nothing to do with the generic
>> parameter T.
>> 
>> Testing:
>> mach5 tier1 and tier4 (tier4 is where vmTestbase_vm_gc_ref tests are run)
>
> Kim Barrett has updated the pull request incrementally with one additional commit since the last revision:
> 
>   plevart improvement

Looks good.

-------------

Marked as reviewed by mchung (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/1897


More information about the core-libs-dev mailing list