RFR 8214971 : Replace use of string.equals("") with isEmpty()

Claes Redestad claes.redestad at oracle.com
Fri Dec 7 19:35:18 UTC 2018


This is an interesting point: can anyone explain why there are two 
distinct methods for LATIN1 and UTF16 equality, with corresponding
intrinsics? Aleksey? Tobias?

Testing with Arrays.equals then performance profile is
quite different due vectorization (often better, sometimes worse),
but this is performance-neutral for a variety of latin1 and utf16 inputs:

if (coder() == aString.coder())
     return StringLatin1.equals(value, aString.value);

Is there some UTF16 input where StringLatin1.equals != 
StringUTF16.equals that forbids the above? Performance-wise it seems 
neutral, and all tests seem to pass with the above (obviously need to 
run more tests...).

Thanks!

/Claes

On 2018-12-07 04:53, James Laskey wrote:
> Or simply;
> 
> if (anObject instanceof String) {
>             String aString = (String)anObject;
>             if (coder() == aString.coder())
>                  return Arrays.equals(value, aString.value);
>             }
>         }
> 
> Sent from my iPhone


More information about the core-libs-dev mailing list