Sponsor for 6666666: A better implementation of Character.isSupplementaryCodePoint

Martin Buchholz martinrb at google.com
Fri Mar 12 23:13:25 UTC 2010


On Fri, Mar 12, 2010 at 05:04, Ulf Zibis <Ulf.Zibis at gmx.de> wrote:
> Am 12.03.2010 02:46, schrieb Martin Buchholz:
>     public static boolean isISOControl(int codePoint) {
>         // Optimized form of:
>         //     (codePoint >= 0x0000 && codePoint <= 0x001F) ||
>         //     (codePoint >= 0x007F && codePoint <= 0x009F);
>         return codePoint <= 0x009F &&
>             (codePoint >= 0x007F || (codePoint >>> 5 == 0));
>     }
>
> Because non-ASCII chars get away with only one comparison.
>
>
> +1 thanks.
> Because here we are talking about ASCII values, I would prefer 2-digit
> values or complete code points e.g. 0x0000007F.

Good idea.  Done.

>
> Alright, you've talked me into it,
> I can't resist your love of micro-optimizations.
>
>
> Is that sentence correct english grammar? I'm afraid to misunderstand.

, ==> .

> By the way, I've filed some bugs against HotSpot to optimize those cases:
> 6932837 - Better use unsigned jump if one of the range limits is 0
> 6932855 - Save superfluous CMP instruction from while loop
> 6933327 - Use shifted addressing modes instead of shift instuctions
> 6933324 - Always inline methods, which have only 1 call site
>
> If they would be accepted and fixed, some of our twiddling would become
> superfluous, at least using c2, but maybe not for interpreter and c1.

Of course, we often write hotspot-optimized code, but in general we should
try to write "good" code that any VM could love.

Martin



More information about the core-libs-dev mailing list