RFR: 8072777: java/lang/ref/ReferenceEnqueuePending.java: some references aren't queued

Kim Barrett kim.barrett at oracle.com
Thu Feb 4 22:58:02 UTC 2016


> On Feb 4, 2016, at 3:38 PM, Mandy Chung <mandy.chung at oracle.com> wrote:
> 
> 
>> On Feb 1, 2016, at 4:05 PM, Kim Barrett <kim.barrett at oracle.com> wrote:
>> 
>>> But this could be an opportunity to also clean-up the code a bit. The checkResult method has an 'obj' parameter whose purpose is not immediately obvious. […]
>>> 
>>> I don't know why such complications are necessary. Is the test supposed to also verify the requirement that a Reference whose referent is kept strongly reachable will not be enqueued?
>> 
>> I was wondering about the odd stuff around obj as well. I don't think
>> it is an attempt to "also verify the requirement that a Reference
>> whose referent is kept strongly reachable will not be enqueued".
>> Rather, I think it is a kludgy way to avoid having the final weaky be
>> sometimes enqueued and sometimes not, depending on compiler
>> optimizations.
>> 
> 
> What you described matches what I understand.
> 
>> Using Reference.reachabilityFence to keep obj and weaky live across
>> the checkResult as you suggested is one way to accomplish that, though
>> keeping only the final obj alive (as in the existing code) suffices to
>> keep the final weaky from being notified.  I think reachabilityFence
>> and a better comment would be clearer though, so changing accordingly.
>> 
> 
> Glad to see the old way keeping an object being GC’ed or optimized out replaced.
> 
>> New webrevs:
>> full: http://cr.openjdk.java.net/~kbarrett/8072777/webrev.01/
>> incr: http://cr.openjdk.java.net/~kbarrett/8072777/webrev.01.inc/
> 
> 
> Looks good.
> Mandy

Thanks!



More information about the hotspot-gc-dev mailing list