A few char-fiddling optimizations for Pattern.java

Ulf Zibis Ulf.Zibis at gmx.de
Fri Apr 16 09:38:58 UTC 2010


Am 16.04.2010 10:48, schrieb Ulf Zibis:
> On a 2nd thought, I think a code point in the surrogate range should 
> be rare, as it is kinda invalid. So why check it in 1. place.
> What is the purpose of the method?
> - isNotValidOrSurrogateBMPCodePoint --> includes negative and values > 
> MAX_SUPPLEMENTARY_CODE_POINT
> - needsSurrogateTreatment --> only includes surrogate and valid 
> supplementary code points

legacy isSupplementary() --> excludes negatives, but includes values > 
MAX_SUPPLEMENTARY_CODE_POINT

>
> I'm thinking about:
>     boolean isBMPCodePoint(int cp, boolean validateSurrogate) {...}

Thinking again, I would drop  isBMPCodePoint(int cp) against:

     boolean isBMPCodePoint(int cp, boolean validateSurrogate) {
         return (cp >>> 16) == 0 && !(validateSurrogate && 
isSurrogate((char)cp));
     }

It would serve more complete the possible use cases.
It would inline to (cp >>> 16) == 0, if validateSurrogate == false.

-Ulf





More information about the core-libs-dev mailing list