Hi Paul, thanks for reviewing the changeset, comment inlined below.
On 01/20/2014 09:24 AM, Paul Sandoz wrote:
Some quick comments.
In String.toLowerCase:
- it would be nice to get rid of the pseudo goto using the "scan" labelled
block.
webrev has been updated to remove the pseudo goto by checking the "first"
against
"len" after the loop break.
- there is no need for the "localeDependent" local variable.
I just tried to not throw away the result of this "localeDependent", which is
still needed
in the toXCaseEx() methods.
- you might be able to optimize by doing (could depend on the answer to the
next point):
int c = (int)value[i];
int lc = Character.toLowerCase(c);
if (.....) { result[i] = (char)lc; } else { return toLowerCaseEx(result, i,
locale, localeDependent); }
- Do you need to check ERROR for the result of toLowerCase?
2586 if (c == Character.ERROR ||
Yes, Character.toLowerCase() should never return ERROR (while the package
private
Character.toUpperCaseEx() will). In theory there is no need to check if the
return
value of Character.toUpperCase(int) > min_supplementary_code_point in our loop,
because there is no bmp character returns a supplementary code point as its
lower
case. But since it's a data driven mapping table, there is no guarantee the
unicode
data table is not going to change in the "future", so I still keep the check.
The webrev
has been updated to use one single "if" inside the loop.
I have a "single if" implementation for the toUpperCase() as well, though don't
sure
which one is better/faster :-)
http://cr.openjdk.java.net/~sherman/8032012/
-Sherman