Roger, I think a simple comment is better than leaving head scratching code behind, especially since it'll impact interpreter and byte code size.
Sent from my phone On Nov 12, 2013 9:58 AM, "roger riggs" <roger.ri...@oracle.com> wrote: > Hi, > > At the source level the style makes it clear where the data is to be > aligned. > There many other places that use that style "<< 0" to indicate alignment > of the data > when assembling a whole from parts. > It is assumed the compiler/runtime will omit unnecessary operations; the > compiler does not. > > $.02, Roger > > On 11/12/2013 9:45 AM, Vitaly Davidovich wrote: > >> Interesting - was this file codegen'd or something? Why are these nop >> shifts there? >> >> Anyway, I'd expect JIT does the right thing here and doesn't actually >> issue >> this instruction. Are you optimizing for interpreter or meta data size >> then? >> >> Sent from my phone >> On Nov 12, 2013 3:45 AM, "Alex Yursha" <alexyur...@gmail.com> wrote: >> >> The following methods in java.io.DataInputStream perform right shift to >>> zero positions in their implementations: >>> - short readShort() >>> - int readUnsignedShort() >>> - char readChar() >>> - int readInt() >>> - long readLong() >>> - String readUTF(DataInput in) >>> >>> For example: >>> >>> public final short readShort() throws IOException { >>> int ch1 = in.read(); >>> int ch2 = in.read(); >>> if ((ch1 | ch2) < 0) >>> throw new EOFException(); >>> return (short)((ch1 << 8) + *(ch2 << 0)*); >>> } >>> >>> It can be optimizied as follows: >>> >>> public final short readShort() throws IOException { >>> int ch1 = in.read(); >>> int ch2 = in.read(); >>> if ((ch1 | ch2) < 0) >>> throw new EOFException(); >>> return (short)((ch1 << 8) + *ch2*); >>> } >>> >>> >>> This optimization saves 2 bytecode instructions in the class file code >>> arrays of each method mentioned above. >>> >>> >