Optimizing byte reverse code for int value
    Hiroshi H Horii 
    HORII at jp.ibm.com
       
    Fri Apr  7 18:13:16 UTC 2017
    
    
  
> > I guess that application does not use ByteBuffer only for calling 
getInt().
> > 
> > Heap-X-Buffer.java.template
> >     public int getInt() {
> >         return Bits.getInt(this, ix(nextGetIndex(4)), bigEndian);
> >     }
> 
> This is old code.  In JDK9 it looks like
> 
>     public int getInt() {
>         return unsafe.getIntUnaligned(hb, 
> byteOffset(nextGetIndex(4)), bigEndian);
>     }
> 
> Unsafe.getIntUnaligned is a HotSpot intrinsic.
Sorry. You are right. I checked jdk8u...
jdk8u doesn't have Unsafe.getIntUnaligned. This change will improve jdk8u.
Regards,
Hiroshi
Andrew Haley <aph at redhat.com> wrote on 2017/04/08 02:58:45:
> From: Andrew Haley <aph at redhat.com>
> To: Hiroshi H Horii/Japan/IBM at IBMJP
> Cc: hotspot-dev at openjdk.java.net, Michihiro Horie/Japan/IBM at IBMJP, 
> ppc-aix-port-dev at openjdk.java.net, volker.simonis at sap.com
> Date: 2017/04/08 02:59
> Subject: Re: Optimizing byte reverse code for int value
> 
> On 07/04/17 18:51, Hiroshi H Horii wrote:
> >> I suggest replacing the use of loadI by endianness specific code
> >> (which could possibly use lwbrx on big endian).
> > 
> > I believe that lwbrx is necessary for BE.
> > 
> >> Surely the source code needs fixing.  It could be:
> >>
> >> public float readFloat(InputStream in) throws IOException {
> >>   readFully(in, aByteBuffer, 0, 4);
> >>   int val = aByteBuffer.getInt(0);
> >>
> >>   return Float.intBitsToFloat(val);
> >> }
> > 
> > In my understanding, ByteBuffer.getInt() does the similar thing.
> 
> It doesn't.
> 
> > I guess that application does not use ByteBuffer only for calling 
getInt().
> > 
> > Heap-X-Buffer.java.template
> >     public int getInt() {
> >         return Bits.getInt(this, ix(nextGetIndex(4)), bigEndian);
> >     }
> 
> This is old code.  In JDK9 it looks like
> 
>     public int getInt() {
>         return unsafe.getIntUnaligned(hb, 
> byteOffset(nextGetIndex(4)), bigEndian);
>     }
> 
> Unsafe.getIntUnaligned is a HotSpot intrinsic.
> 
> Bits.java is not used for this.
> 
> Andrew.
> 
    
    
More information about the hotspot-dev
mailing list