RFR #2 (M) 8148146: Integrate new internal Unsafe entry points, and basic intrinsic support for VarHandles

John Rose john.r.rose at oracle.com
Wed Feb 17 19:42:02 UTC 2016


One other point:  As long as you are massaging the library_call code,
you could flush the *_raw versions of all the intrinsics:  All we need
are the normal intrinsics (GETPUTOOP), not the one-address ones
(GETPUTNATIVE), as long as Unsafe class (both of them) redirects
one call to the other.

The *_raw (NATIVE) intrinsics should have been GC-ed a long time ago,
given that the two-address version (OOP) is all anybody needs.

To avoid mishaps, a @ForceInline is needed on that kind of wrapper.

Mikael's forthcoming Unsafe changes are another place we could
handle this cleanup.

— John

> On Feb 16, 2016, at 7:30 PM, John Rose <john.r.rose at oracle.com> wrote:
> 
> On Feb 15, 2016, at 4:22 AM, Aleksey Shipilev <aleksey.shipilev at oracle.com> wrote:
>> 
>> c) unsafe.cpp gets the basic native method implementations. Most new
>> operations are folded to their volatile (the strongest) counterparts,
>> hoping that compilers would intrinsify them into more performant versions.
> 
> A simpler way to accomplish this would be to give the folded API points non-native method bodies, redirecting to whatever native they are folded to.
> 
> This will move most of the folding choices up to Java code.  A fair amount of movement in unsafe.cpp will disappear.
> 
> The non-native folded methods would still be marked @HSIC and be optimized accordingly.
> 
> — John



More information about the jdk9-dev mailing list