RFR: 8166607: G1 needs klass_or_null_acquire

Erik Helin erik.helin at oracle.com
Fri Nov 18 12:59:12 UTC 2016

On 11/16/2016 12:58 AM, Kim Barrett wrote:
>> On Nov 15, 2016, at 5:21 AM, Thomas Schatzl <thomas.schatzl at oracle.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 oracle.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/

Again, thanks for all your hard work on this patch series!

I've been over this patch (and the other one) many times now, and I 
think this is good. At least I can't come up with any reason why it 
wouldn't work (this is one trickiest parts of G1).


> 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.

More information about the hotspot-dev mailing list