RFR: JDK-8199735: Mark word updates need to use Access API (original) (raw)

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() setmark() 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