src/share/vm/compiler/compilerOracle.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/compiler/compilerOracle.cpp

src/share/vm/compiler/compilerOracle.cpp

Print this page
rev 7383 : 8027829: CompileCommand does not accept all JLS-conformant class/method names
Summary: Fix parsing and updated comments
Reviewed-by:

*** 490,511 **** tty->print_cr(" compileonly java/lang/StringBuffer.toString ()Ljava/lang/String;"); tty->print_cr(" exclude java/lang/String*.*"); tty->print_cr(" exclude *.toString"); } ! ! // The characters allowed in a class or method name. All characters > 0x7f ! // are allowed in order to handle obfuscated class files (e.g. Volano) ! #define RANGEBASE "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_<>" \ ! "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" \ ! "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" \ ! "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf" \ ! "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf" \ ! "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf" \ ! "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf" \ ! "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef" \ ! "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" #define RANGE0 "[*" RANGEBASE "]" #define RANGESLASH "[*" RANGEBASE "/]" static MethodMatcher::Mode check_mode(char name[], const char*& error_msg) { --- 490,525 ---- tty->print_cr(" compileonly java/lang/StringBuffer.toString ()Ljava/lang/String;"); tty->print_cr(" exclude java/lang/String*.*"); tty->print_cr(" exclude *.toString"); } ! // The characters allowed in a class or method name. ! // Chars in ascii range 0x00-0x7f can only exist in UTF8 single byte encoding. ! // The range 0xc00-0xf7 is the first byte in a multibyte sequence ! // The range 0x80-0xbf are for the followers in a multibyte sequence ! // The range 0xf7-0xff can not exist in any position. ! // 0x00 is a legal part identifer but we can not support that. ! // The parser accepts all matching Charachter.isJavaIdentiferPart - ! // that means some illegal patterns may be specified. They will never ! // match any method or class. ! ! #define RANGEBASE "\x1\x2\x3\x4\x5\x6\x7\x8\xe\xf" \ ! "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b" \ ! "\x24" \ ! "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39" \ ! "\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f" \ ! "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5f" \ ! "\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f" \ ! "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7f" \ ! "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" \ ! "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" \ ! "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf" \ ! "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf" \ ! "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf" \ ! "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf" \ ! "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef" \ ! "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7" #define RANGE0 "[*" RANGEBASE "]" #define RANGESLASH "[*" RANGEBASE "/]" static MethodMatcher::Mode check_mode(char name[], const char*& error_msg) {
*** 679,689 **** line += bytes_read; ResourceMark rm; if (command == UnknownCommand) { ttyLocker ttyl; ! tty->print_cr("CompilerOracle: unrecognized line"); tty->print_cr(" \"%s\"", original_line); return; } if (command == QuietCommand) { --- 693,703 ---- line += bytes_read; ResourceMark rm; if (command == UnknownCommand) { ttyLocker ttyl; ! tty->print_cr("CompileCommand: unrecognized command"); tty->print_cr(" \"%s\"", original_line); return; } if (command == QuietCommand) {
*** 738,748 **** char option[256]; // stores flag for Type (1) and type of Type (2) while (sscanf(line, "%*[ \t]%255[a-zA-Z0-9]%n", option, &bytes_read) == 1) { if (match != NULL && !_quiet) { // Print out the last match added ttyLocker ttyl; ! tty->print("CompilerOracle: %s ", command_names[command]); match->print(); } line += bytes_read; if (strcmp(option, "intx") == 0 --- 752,762 ---- char option[256]; // stores flag for Type (1) and type of Type (2) while (sscanf(line, "%*[ \t]%255[a-zA-Z0-9]%n", option, &bytes_read) == 1) { if (match != NULL && !_quiet) { // Print out the last match added ttyLocker ttyl; ! tty->print("CompileCommand: %s ", command_names[command]); match->print(); } line += bytes_read; if (strcmp(option, "intx") == 0
*** 773,797 **** } ttyLocker ttyl; if (error_msg != NULL) { // an error has happened ! tty->print_cr("CompilerOracle: unrecognized line"); tty->print_cr(" \"%s\"", original_line); if (error_msg != NULL) { tty->print_cr("%s", error_msg); } } else { // check for remaining characters bytes_read = 0; sscanf(line, "%*[ \t]%n", &bytes_read); if (line[bytes_read] != '\0') { ! tty->print_cr("CompilerOracle: unrecognized line"); tty->print_cr(" \"%s\"", original_line); tty->print_cr(" Unrecognized text %s after command ", line); } else if (match != NULL && !_quiet) { ! tty->print("CompilerOracle: %s ", command_names[command]); match->print(); } } } --- 787,811 ---- } ttyLocker ttyl; if (error_msg != NULL) { // an error has happened ! tty->print_cr("CompileCommand: An error occured during parsing"); tty->print_cr(" \"%s\"", original_line); if (error_msg != NULL) { tty->print_cr("%s", error_msg); } } else { // check for remaining characters bytes_read = 0; sscanf(line, "%*[ \t]%n", &bytes_read); if (line[bytes_read] != '\0') { ! tty->print_cr("CompileCommand: Bad pattern"); tty->print_cr(" \"%s\"", original_line); tty->print_cr(" Unrecognized text %s after command ", line); } else if (match != NULL && !_quiet) { ! tty->print("CompilerCommand: %s ", command_names[command]); match->print(); } } }
src/share/vm/compiler/compilerOracle.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File