RFR (S) 8078438: Interpreter should support conditional card marks (UseCondCardMark)

Andrew Haley aph at redhat.com
Wed Apr 29 09:51:34 UTC 2015


On 04/28/2015 02:28 PM, Mikael Gerdin wrote:
> 
> Consider the following sequence of events:
> Mutator:		CMS-preclean:
> # o.x == NULL
> o.x = a			
> card[o >> 9] = 0x0	finds card[o >> 9] == 0x0
> 			reads o.x, finds NULL
> 			writes card[o >> 9] = 0x1
> #			o.x == a becomes visible
> 
> CMS-remark occurs, o.x is not scanned because card[o >> 9] == 0x1 which 
> is not dirty.

There is still something I don't understand.

Let's imagine that the card is already marked 0.  We're using
conditional card marks, so we don't write another 0 to the card table.

Mutator:                CMS-preclean:
# o.x == NULL
# card[o >> 9] == 0x0
o.x = a
                        finds card[o >> 9] == 0x0
                        reads o.x, finds NULL
                        writes card[o >> 9] = 0x1
#                       o.x == a becomes visible

Isn't this exactly the same problem?

Andrew.



More information about the hotspot-gc-dev mailing list