RFR: 8208601: Introduce native oop barriers in C2 for OopHandle
Nils Eliasson
nils.eliasson at oracle.com
Tue Aug 21 09:46:31 UTC 2018
Looks good.
// Nils
On 2018-08-01 13:17, Erik Österlund wrote:
> 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
More information about the hotspot-dev
mailing list