RFR: 8208601: Introduce native oop barriers in C2 for OopHandle

Erik Österlund erik.osterlund at oracle.com
Wed Aug 1 11:17:30 UTC 2018


Hi,

There is currently no way of doing IN_NATIVE accesses in C2 using its 
access API. These are required to properly access OopHandle, used to 
access the Java class mirrors (because they will now start requiring 
load barriers). In order to support (concurrent) class unloading in ZGC, 
this support must be added.

In this patch, I add an access_load API for loading IN_NATIVE oops, and 
use it to load class mirrors (which is logically an OopHandle::resolve, 
which happened to have been an indirect load before as nobody had load 
barriers on it). In the various code recognizing the shape of a mirror 
load to optimize the code, I have added a check if a node is a GC 
barrier and to then step over it in order to match the mirror load.

In order to recognize and step over the load barriers in ZGC properly, I 
added support for recognizing the barrier shapes not just before macro 
expansion (LoadBarrierNode), but also after macro expansion (as required 
by the matching code), which involves checking for phi nodes with with 
LoadBarrierSlowRegNode phi->in(1), and then stepping over to phi->in(2), 
as well as recognizing projections to such shapes. 
LoadBarrierSlowRegNode is used in all barrier expansions except for 
atomic xchg, but that is fine as we don't use that on class mirrors.

I have checked that the shapes are recognized and that no regressions 
are introduced with these changes through a bunch of benchmarks in 
gc-test-suite.

Webrev:
http://cr.openjdk.java.net/~eosterlund/8208601/webrev.00/ 
<https://link.getmailspring.com/link/1533049674.local-48cfadc1-4a64-v1.3.0-fd741eb7@getmailspring.com/0?redirect=http%3A%2F%2Fcr.openjdk.java.net%2F%7Eeosterlund%2F8208582%2Fwebrev.00%2F&recipient=aG90c3BvdC1jb21waWxlci1kZXZAb3Blbmpkay5qYXZhLm5ldA%3D%3D>
Bug URL:
https://bugs.openjdk.java.net/browse/JDK-8208601 
<https://link.getmailspring.com/link/1533049674.local-48cfadc1-4a64-v1.3.0-fd741eb7@getmailspring.com/1?redirect=https%3A%2F%2Fbugs.openjdk.java.net%2Fbrowse%2FJDK-8208582&recipient=aG90c3BvdC1jb21waWxlci1kZXZAb3Blbmpkay5qYXZhLm5ldA%3D%3D>

Thanks,
/Erik
Open Tracking
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20180801/e3cf8a59/attachment-0002.html>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20180801/e3cf8a59/attachment-0003.html>


More information about the hotspot-compiler-dev mailing list