Unsafe.{get,put}-X-Unaligned; Efficient array comparison intrinsics

David Holmes david.holmes at oracle.com
Mon Mar 9 06:06:19 UTC 2015


On 9/03/2015 3:56 PM, John Rose wrote:
> On Mar 8, 2015, at 4:32 PM, David Holmes <david.holmes at oracle.com
> <mailto:david.holmes at oracle.com>> wrote:
>>
>> Yes it could but why should it be? You have a singleton instance with
>> all instance methods, so cached state should be in an instance field
>> not a static one.
>
> No, the singleton instance is *not* currently used, so it would add new
> constraints on the optimizer to begin using fields from it.

No sure what you mean by it isn't used - code invokes instance methods 
on the unsafe instance all over the JDK ???

> Only the non-nullness of its reference is significant.  It has no state
> by design.

Given all existing methods are stateless I can't tell if this a 
statement of intent (ie it must never have state) or simply a statement 
of fact as all the methods are stateless. If it should in fact never 
have any state then that should be documented.

> Put another way:  It is a uniquely simple empty singleton object.
> To pass the unsafe access check, the JIT need only check that some
> non-null reference is available.
> And JVM JITs are very good at exactly that check.

So the reason to use a static field from an instance method is simply an 
artifact of the interaction of our JIT with this class?

David

> — John



More information about the core-libs-dev mailing list