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.

Reply via email to