On Wed, 29 Sep 2021 19:40:20 GMT, Vladimir Kozlov <k...@openjdk.org> wrote:
> `RANGEBASE` was added by > [JDK-6500501](https://bugs.openjdk.java.net/browse/JDK-6500501) and later was > modified by [JDK-8027829](https://bugs.openjdk.java.net/browse/JDK-8027829) > > Note the original comment from 6500501: > > ``` > // The characters allowed in a class or method name. All characters > 0x7f > // are allowed in order to handle obfuscated class files (e.g. Volano) > ``` Thanks @vnkozlov for your very helpful comments. I have one question: how can we specify (non-ascii chars) and (non-printable ascii chars) through `-XX:CompileCommand`? I just learned from https://bugs.openjdk.java.net/browse/JDK-8027829 that we can use unicode like `\uxxxx`. But it doesn't work in my experiments. My example was made from: https://bugs.openjdk.java.net/secure/attachment/17128/UnicodeIdentifierTest.java public class UnicodeIdentifierTest { public static void main(String args[]) { System.out.println("Can I use \\u0001 in identifier name? " + (Character.isJavaIdentifierPart(1) ? "yes" : "no")); for (int i = 0; i < 100000; i++ ) methodWithUnicode\u0001Char(); System.out.println("Can I use \\u00aa in identifier name? " + (Character.isJavaIdentifierPart(0xaa) ? "yes" : "no")); for (int i = 0; i < 100000; i++ ) methodWithUnicode\u00aaChar(); System.out.println("Can I use \\u006b in identifier name? " + (Character.isJavaIdentifierPart(0x6b) ? "yes" : "no")); for (int i = 0; i < 100000; i++ ) methodWithUnicode\u006bChar(); } public static int a = 0; public static void methodWithUnicode\u0001Char() { a++; } public static void methodWithUnicode\u00aaChar() { a++; } public static void methodWithUnicode\u006bChar() { a++; } } And I tried to exclude some specific methods like this ${JDK}/bin/java \ -XX:+PrintCompilation \ -XX:CompileCommand=exclude,`echo -e "UnicodeIdentifierTest::methodWithUnicode\u0001Char"` \ -XX:CompileCommand=exclude,`echo -e "UnicodeIdentifierTest.methodWithUnicode\u0001Char"` \ -XX:CompileCommand=exclude,"UnicodeIdentifierTest.methodWithUnicode\u0001Char" \ -XX:CompileCommand=exclude,'UnicodeIdentifierTest.methodWithUnicode\u0001Char' \ -XX:CompileCommand=exclude,UnicodeIdentifierTest.methodWithUnicode\u0001Char \ -XX:CompileCommand=exclude,`echo -e "UnicodeIdentifierTest::methodWithUnicode\u00aaChar"` \ -XX:CompileCommand=exclude,`echo -e "UnicodeIdentifierTest.methodWithUnicode\u00aaChar"` \ -XX:CompileCommand=exclude,"UnicodeIdentifierTest.methodWithUnicode\u00aaChar" \ -XX:CompileCommand=exclude,'UnicodeIdentifierTest.methodWithUnicode\u00aaChar' \ -XX:CompileCommand=exclude,UnicodeIdentifierTest.methodWithUnicode\u00aaChar \ -XX:CompileCommand=exclude,`echo -e "UnicodeIdentifierTest::methodWithUnicode\u006bChar"` \ -XX:CompileCommand=exclude,`echo -e "UnicodeIdentifierTest.methodWithUnicode\u006bChar"` \ -XX:CompileCommand=exclude,"UnicodeIdentifierTest.methodWithUnicode\u006bChar" \ -XX:CompileCommand=exclude,'UnicodeIdentifierTest.methodWithUnicode\u006bChar' \ -XX:CompileCommand=exclude,UnicodeIdentifierTest.methodWithUnicode\u006bChar \ ${TEST} But none of them worked. So if there is no other way to specify a non-ascii chars, it seems safe to remove the non-ascii code. If I miss something, please let me know. Thanks. ------------- PR: https://git.openjdk.java.net/jdk/pull/5704