-
Enhancement
-
Resolution: Fixed
-
P4
-
None
-
b13
Folding the isOtherUppercase/-Lowercase methods into isUpperCase and isLowerCase respectively would simplify code structure and allow for a small startup improvement in some apps.
Additionally CharacterDataLatin1.isOtherUppercase always returns false, so the lookup in getPropertiesEx can be removed altogether for this case, which gives a small speed-up in microbenchmarks.
This opens some questions regarding semantics of such a change in presence of an intrinsic, especially CharacterDataLatin1.isLowerCase which will change semantics subtly. Currently only PPC implements these intrinsics, seeJDK-8213754
My reading of the POWER9 assembly might be off, but the lowercase intrinsic appears to handle the two codepoint (0xaa, 0xba) that return true for CharacterDataLatin1.isOtherLowercase(codepoint) in the 0-255 range: https://github.com/openjdk/jdk/commit/31fbc28af5d8933f7b8d6b25249fccb1a738ffb6#diff-d21a64a4949f298476bf91083d3b956face9a6393a08a706b071068898533082R12463
It thus appears this refactoring would bring the java code for CharacterDataLatin1.isLowerCase more in line with the semantics expressed by the PPC intrinsic.
Additionally CharacterDataLatin1.isOtherUppercase always returns false, so the lookup in getPropertiesEx can be removed altogether for this case, which gives a small speed-up in microbenchmarks.
This opens some questions regarding semantics of such a change in presence of an intrinsic, especially CharacterDataLatin1.isLowerCase which will change semantics subtly. Currently only PPC implements these intrinsics, see
My reading of the POWER9 assembly might be off, but the lowercase intrinsic appears to handle the two codepoint (0xaa, 0xba) that return true for CharacterDataLatin1.isOtherLowercase(codepoint) in the 0-255 range: https://github.com/openjdk/jdk/commit/31fbc28af5d8933f7b8d6b25249fccb1a738ffb6#diff-d21a64a4949f298476bf91083d3b956face9a6393a08a706b071068898533082R12463
It thus appears this refactoring would bring the java code for CharacterDataLatin1.isLowerCase more in line with the semantics expressed by the PPC intrinsic.