RFR: 8255598: [PPC64] assert(Universe::heap()->is_in(result)) failed: object not in heap [v2]

Thomas Schatzl tschatzl at openjdk.java.net
Mon Nov 9 10:16:58 UTC 2020

On Thu, 5 Nov 2020 22:29:11 GMT, Martin Doerr <mdoerr at openjdk.org> wrote:

>> JDK-8237363 introduced "assert(Universe::heap()->is_in..." check in CompressedOops::decode functions.
>> This assertion restricts the usability of the decode functions. There are periods of time (during GC) at which we can't use " Universe::heap()->is_in" because the pointer gets switched between old and new location, but "Universe::heap()->is_in" is not yet accurate.
>> PPC64 code has a usage of CompressedOops::decode which is affected by this problem. (It was observed with SerialGC, see JBS.)
>> We could also use a weaker assertion, but seems like other people value the stronger assertion more. So I suggest to use decode_raw as workaround for PPC64.
> Martin Doerr has updated the pull request incrementally with one additional commit since the last revision:
>   add comment and use CompressedOops::is_null

An alternative change could be investigating whether setting `top()` earlier in the serial gc full gc. It seems to only be a problem with that collector, as the others are seemingly not affected.

I'm okay with this change too though.


Marked as reviewed by tschatzl (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/1078

More information about the hotspot-gc-dev mailing list