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

John Rose john.r.rose at oracle.com
Sun Mar 8 21:28:04 UTC 2015


On Mar 7, 2015, at 11:24 AM, Remi Forax <forax at univ-mlv.fr> wrote:
> 
> 
> On 03/07/2015 07:48 PM, Andrew Haley wrote:
>> On 03/07/2015 05:57 PM, Remi Forax wrote:
>>> Hi Andrew,
>>> I've just read carefully the JDK part and I'm mostly ok with it.
>>> 
>>> in Unsafe, all private methods should be static
>> You're going to have to explain that.  Firstly, why?  There's no real
>> performance advantage, and secondly, how is a static method supposed
>> to invoke the virtual methods in Unsafe?  I suppose it could use
>> theUnsafe.blah() but that would be worse than a simple virtual call.
> 
> I mean all private methods that doesn't starts with "put*",
> convEndian, toUnsignedInt/toUnsignedLong, pick, make*, pickPos.

It's a small point but I agree with this.  Leaving out "static" makes it harder to
understand the roles of the relevant methods.  Scrutable code is better code.

It almost never matters, but there is also a slight effect on the code pipeline:
passing 'this' as an argument slightly increases the complexity of the methods.

— John


More information about the hotspot-compiler-dev mailing list