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