RFR (S) 8078438: Interpreter should support conditional card marks (UseCondCardMark)
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.
# 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?
More information about the hotspot-gc-dev