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