comparison src/share/vm/compiler/compilerOracle.cpp @ 1155:4e6abf09f540

6912062: disassembler plugin needs to produce symbolic information in product mode Summary: More informative disassembly in product mode. Also, a more consistent CompileCommand syntax. Reviewed-by: never
author jrose
date Fri, 08 Jan 2010 13:47:01 -0800
parents a61af66fc99e
children c18cbe5936b8
comparison
equal deleted inserted replaced
1153:bea7a22a6f79 1155:4e6abf09f540
390 "%*[ \t]%255" RANGEDOT "::" "%255" RANGE0 "%n", 390 "%*[ \t]%255" RANGEDOT "::" "%255" RANGE0 "%n",
391 "%*[ \t]%255" RANGESLASH "%*[ .]" "%255" RANGE0 "%n", 391 "%*[ \t]%255" RANGESLASH "%*[ .]" "%255" RANGE0 "%n",
392 }; 392 };
393 393
394 static MethodMatcher::Mode check_mode(char name[], const char*& error_msg) { 394 static MethodMatcher::Mode check_mode(char name[], const char*& error_msg) {
395 if (strcmp(name, "*") == 0) return MethodMatcher::Any;
396
397 int match = MethodMatcher::Exact; 395 int match = MethodMatcher::Exact;
398 if (name[0] == '*') { 396 while (name[0] == '*') {
399 match |= MethodMatcher::Suffix; 397 match |= MethodMatcher::Suffix;
400 strcpy(name, name + 1); 398 strcpy(name, name + 1);
401 } 399 }
402 400
401 if (strcmp(name, "*") == 0) return MethodMatcher::Any;
402
403 size_t len = strlen(name); 403 size_t len = strlen(name);
404 if (len > 0 && name[len - 1] == '*') { 404 while (len > 0 && name[len - 1] == '*') {
405 match |= MethodMatcher::Prefix; 405 match |= MethodMatcher::Prefix;
406 name[len - 1] = '\0'; 406 name[--len] = '\0';
407 } 407 }
408 408
409 if (strstr(name, "*") != NULL) { 409 if (strstr(name, "*") != NULL) {
410 error_msg = " Embedded * not allowed"; 410 error_msg = " Embedded * not allowed";
411 return MethodMatcher::Unknown; 411 return MethodMatcher::Unknown;
608 608
609 void compilerOracle_init() { 609 void compilerOracle_init() {
610 CompilerOracle::parse_from_string(CompileCommand, CompilerOracle::parse_from_line); 610 CompilerOracle::parse_from_string(CompileCommand, CompilerOracle::parse_from_line);
611 CompilerOracle::parse_from_string(CompileOnly, CompilerOracle::parse_compile_only); 611 CompilerOracle::parse_from_string(CompileOnly, CompilerOracle::parse_compile_only);
612 CompilerOracle::parse_from_file(); 612 CompilerOracle::parse_from_file();
613 if (lists[PrintCommand] != NULL) {
614 if (PrintAssembly) {
615 warning("CompileCommand and/or .hotspot_compiler file contains 'print' commands, but PrintAssembly is also enabled");
616 } else if (FLAG_IS_DEFAULT(DebugNonSafepoints)) {
617 warning("printing of assembly code is enabled; turning on DebugNonSafepoints to gain additional output");
618 DebugNonSafepoints = true;
619 }
620 }
613 } 621 }
614 622
615 623
616 void CompilerOracle::parse_compile_only(char * line) { 624 void CompilerOracle::parse_compile_only(char * line) {
617 int i; 625 int i;