RFR: JDK-8199735: Mark word updates need to use Access API

Erik Österlund erik.osterlund at oracle.com
Thu Mar 22 13:32:02 UTC 2018


Hi Roman,

A few comments:

1) Please make sure all files referencing these accessors that have been 
moved to the oop.inline.hpp file now #include the oop.inline.hpp file. I 
found that there are quite a few missing by looking for references to 
oopDesc::mark() with rtags.
2) I think the mark_addr() function should now be called mark_addr_raw() 
for consistency.
3) I wonder if there should be _raw() accessors that the GCs use 
instead. It feels like the GC should not go through the Access API to 
acquire mark words.

Thanks,
/Erik


On 2018-03-21 20:21, Roman Kennke wrote:
> Am 19.03.2018 um 12:07 schrieb Roman Kennke:
>> Am 19.03.2018 um 11:40 schrieb Roman Kennke:
>>> Currently, the mark word is accessed directly in oopDesc::mark()
>>> set_mark() and a bunch of other accessors. Those need to use the Access
>>> API instead because GC might want to employ barriers on those accesses,
>>> pretty much like every other field in oopDesc.
>>>
>>> Notice that this is *not* about accessing the bits and fields inside the
>>> markOop, but about accessing the header itself.
>>>
>>> http://cr.openjdk.java.net/~rkennke/JDK-8199735/webrev.01/
>>>
>>> Testing: build fastdebug/release with and without PCH, passed tier1
>>> fastdebug/release.
>>>
>>> Can I please get reviews?
>>>
>>> Thanks, Roman
>>>
>> Just when I sent it, I realized that this is dropping the volatile from
>> the mark word access. Fixed here:
>>
>>
>> http://cr.openjdk.java.net/~rkennke/JDK-8199735/webrev.02/
>>
> Ping?
>




More information about the hotspot-gc-dev mailing list