> On 5 Apr 2016, at 17:15, Claes Redestad <claes.redes...@oracle.com> wrote:
> 
> On 04/04/2016 05:45 PM, Martin Buchholz wrote:
>>> I think this one is going too far.
>>> 
>>> A*FU/VarHandles should are supposed to act like a go-to replacement for
>>> Unsafe throughout the class library, and we want to shrink the Unsafe
>>> exposure. Also, I don't think removing A*FU in favor of Unsafe here wins
>>> us anything: there should be no throughput hit, and we *will* load A*FU
>>> down the road anyway, negating the startup wins.

+1 i would leave this one as is.

In general same goes for the @Stable/ForceInline annotations etc. We should use 
this stuff carefully within java.base and also sparingly to qualifying JDK 
modules.

>>> 
>>> -Aleksey
>> It is surprising to see new uses of Unsafe when we have an ongoing
>> initiative within openjdk (especially from Paul Sandoz) to remove most
>> uses.  Varhandles are coming and are expected to replace uses of
>> Unsafe in the JDK.
> 
> This is just a very minor win on hello world/-version style tests, so I'm 
> happy to withdraw this if other early usages, such as CHM, is moving to 
> VarHandles anyhow.
> 
> OTOH using dangerous, internal APIs like this rather than nice, public APIs 
> early in the VM bootstrap has other merits, such as not unintentionally 
> causing bootstrap issues. Say, I don't know if VarHandles have any 
> dependencies on java.lang.invoke currently…

It does, but was designed to be minimize bootstrap issues and class spinning so 
there are less dependencies than MHs.

CHM is a tricky class because MethodType uses CHM and VHs uses MethodType. 
There is probably a way of switching from a less concurrent concurrent map to 
CHM at “safe-point” when the VM transitions to booted. To be investigated...

Paul.

Reply via email to