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

Andrew Dinn adinn at redhat.com
Wed Apr 29 08:27:30 UTC 2015

On 29/04/15 08:57, Andrew Haley wrote:
> On 28/04/15 17:13, Andrew Dinn wrote:
>>>> or, preferably
>>>>>>   add	x10, x13, #0x28
>>>>>>   stlr	w14, [x10]
>>>>>>   lsr	x10, x13, #9
>>>>>>   stlrb	wzr, [x11,x10,lsl #0]
>>>> That's more like it.
>> Yes, that is indeed much preferred.
> It's not necessary to use STLRB.  For a volatile OOP store you have
>    store -> volatile oop field
>    update card mark
> It's not necessary for the card mark store to become visible
> immediately, just that it not become visible before the OOP store.
> This is guaranteed by volatile semantics as long as there is a
> happens-before relationship with the reading thread, which there
> seems to be because of the way that collector threads use locks.
> Therefore, it is not necessary to do anything more than
>    add	x10, x13, #0x28
>    stlr	w14, [x10]
>    lsr	x10, x13, #9
>    strb	wzr, [x11,x10,lsl #0]

Well, ok, so it looks like e can get away with an strb when we are doing
a card mark for a volatile store i.e. where we are using an stlr<x> for
the field write.

But for non-volatile stores the accompanying StoreCM needs to be
translated to stlrb. We need that to enforce completion of the preceding
stlr<x> before the card mark becomes visible. So, the status quo is
still inadequate.


Andrew Dinn
Senior Principal Software Engineer
Red Hat UK Ltd
Registered in UK and Wales under Company Registration No. 3798903
Directors: Michael Cunningham (USA), Matt Parson (USA), Charlie Peters
(USA), Michael O'Neill (Ireland)

More information about the hotspot-gc-dev mailing list