RFR: 8166607: G1 needs klass_or_null_acquire

Kim Barrett kim.barrett at oracle.com
Fri Nov 18 14:32:33 UTC 2016


> On Nov 18, 2016, at 9:28 AM, Thomas Schatzl <thomas.schatzl at oracle.com> wrote:
> 
> Hi Kim,
> 
> On Fri, 2016-11-18 at 09:03 -0500, Kim Barrett wrote:
>>> 
>>> On Nov 15, 2016, at 6:58 PM, Kim Barrett <kim.barrett at oracle.com>
>>> wrote:
>>> 
>>>> 
>>>> On Nov 15, 2016, at 5:21 AM, Thomas Schatzl <thomas.schatzl at oracl
>>>> e.com> wrote:
>>>> 
>>>> Hi Kim,
>>>> 
>>>> On Mon, 2016-11-07 at 14:38 -0500, Kim Barrett wrote:
>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Nov 7, 2016, at 5:53 AM, Thomas Schatzl <thomas.schatzl at or
>>>>>> acle.c
>>>>>> om> wrote:
>>>>>> Maybe it would be cleaner to call a method in the barrier set
>>>>>> instead of inlining the dirtying + enqueuing in lines 685 to
>>>>>> 691?
>>>>>> Maybe as an additional RFE.
>>>>> We could use _ct_bs->invalidate(dirtyRegion).  That's rather
>>>>> overgeneralized and inefficient for this situation, but this
>>>>> situation should occur *very* rarely; it requires a stale card
>>>>> get
>>>>> processed just as a humongous object is in the midst of being
>>>>> allocated in the same region.
>>>> I kind of think for these reasons we should use _ct_bs-
>>>>> invalidate() as
>>>> it seems clearer to me. There is the mentioned drawback of having
>>>> no
>>>> other more efficient way, so I will let you decide about this.
>>> I've made the change to call invalidate, and also updated some
>>> comments.
>>> 
>>> CR:
>>> https://bugs.openjdk.java.net/browse/JDK-8166607
>>> 
>>> Webrevs:
>>> full: http://cr.openjdk.java.net/~kbarrett/8166607/webrev.03/
>>> incr: http://cr.openjdk.java.net/~kbarrett/8166607/webrev.03.inc/
>>> 
>>> Also, see RFR: 8166811, where I've included a webrev combining the
>>> latest changes for 8166607 and 8166811, since they are rather
>>> intertwined.  I think I'll do as Erik suggested and push the two
>>> together.
>> Sorry folks, but I want to revert this part and go back to the old
>> code where it locked the shared queue and enqueued there.
>> 
> 
> You mean the invalidate() call? If you think this is better, it has
> only been a suggestion.

Yes.  It seemed like a good idea at the time…



More information about the hotspot-dev mailing list