RFR: JDK-8213371: GC/C2 abstraction and cleanup to handle custom offset for GC memory accesses

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Nov 6 19:48:01 UTC 2018

Changes in compile.cpp and type.cpp look fine.

I think in memnode.cpp (uint) casts are used to take into account OffsetTop and OffsetBot without explicitly checking 
for them. We don't expect OffsetTop here - there assert to check that. But 'off' could be OffsetBot. In line 1706 there 
is OffsetBot check but not in line 1737:


I think you need to add explicit check OffsetBot for off_beyond_header.
You did that in type.cpp.


On 11/5/18 7:34 AM, Roman Kennke wrote:
>   There are a few places in C2 where we need to deal with Shenandoah's
> custom offset to load the forwarding pointer.
> This patch:
> - Adds hook and verification to allow GC to flatten/initialize an alias
> type for (e.g.) fwd ptr accesses (btw: the 'to' field in compile.cpp
> around the changed code is unused)
> - in memnode.cpp removes the (unnecessary?) cast from ints to uints
> - in type.cpp, make the offset check more explicit about offset > 0 or
> the two predefined offsets that could be negative.
> The latter two are related to the change insofar that they conflict with
> Shenandoah's -8 offset, which would require extra handling without those
> cleanups. Let me know if you want those changes separate.
> Testing: hotspot/jtreg:tier1
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8213371
> Webrev:
> http://cr.openjdk.java.net/~rkennke/JDK-8213371/webrev.00/
> Can I please get a review?
> Roman

More information about the hotspot-gc-dev mailing list