On 09/06/10 10:11, Andrew John Hughes wrote: > On 9 June 2010 07:55, Florian Weimer <fwei...@bfk.de> wrote: >> * Andrew John Hughes: >> >>> On 7 June 2010 23:04, Xueming Shen <xueming.s...@oracle.com> wrote: >>>> Hi Andrew, >>>> >>>> 6959197: When building with JAVAC_MAX_WARNINGS=true, the build fails in >>>> sun/nio/cs due to the use of -Werror >>>> >>>> (1)sun/io/ByteTocharISO2022JP.java >>>> #129, #151 >>>> >>>> if ((byte1 & (byte)0x80) != 0){ >>>> >>>> if ((byte2 & (byte)0x80) != 0){ >>>> >>>> >>>> (byte) casting is not necessary as well? >>>> >>> >>> It's necessary. 0x80 is an integer literal >>> (http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.1) >>> which requires a lossy narrowing conversion to byte >>> (http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.1.3) >> >> Doesn't the & operator promote its arguments to int anyway? I don't >> think the cast to byte makes a difference here because it does not >> matter if 0x80 is sign-extended or zero-extended. >> >> It might be more efficient to use "byte1 < 0" and "byte2 < 0" instead.
This code may be in a critical performance-related place. It's quite possible that it's done this way because the JIT compiles it very well. So, best not to change it without knowing what the effect is. Andrew.