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

Peter Levart peter.levart at gmail.com
Sat Mar 7 21:23:06 UTC 2015



On 03/06/2015 07:50 PM, Andrew Haley wrote:
> I've tried to so everything I've been asked.  If this version passes
> muster with everyone I'll Javadoc all the public methods and fields
> and put it up for RFA next week.
>
> I guess it's going to need a lot of testing and security analysis.
>
> I added versions of all {put,get} methods with the boolean bigEndian
> argument.  This makes HeapByteBuffer much cleaner, and it does not
> need to know the machine endianness at all.  I hope that's OK.
>
> Andrew.
>
>
> http://cr.openjdk.java.net/~aph/unaligned.hotspot.4/
> http://cr.openjdk.java.net/~aph/unaligned.jdk.4/

Hi Andrew,

I see you're not using Unsafe.unalignedAccess() method in Unsafe code at 
all. So the approach to use this information and decide whether to use 
Unsafe.getXXX() or Unsafe.getXXXUnaligned() is left to the user of 
Unsafe API. That's OK if you think this approach is a better division of 
concerns (Unsafe being low-level), but in Heap-X-Buffer you are only 
using Unsafe.get|putXXXUnaligned() and don't consider using get|putXXX 
directly when unalignedAccess() == true.

In java.nio.Bits, the Unsafe.unalignedAccess() is used to lazily 
initialize the Bits.unaligned static field. This lazy initialization is 
unnecessary now and 'unaligned' field can be made final.

Regards, Peter




More information about the core-libs-dev mailing list