2012-06-02 Sergio Durigan Junior <sergiodj@redhat.com>

* symtab.c (symbol_demangled_name): New variable `dem_name'.  Use
	it to optimize resolution of demangled name.
This commit is contained in:
Sergio Durigan Junior 2012-06-02 04:34:23 +00:00
parent 124d95f6ca
commit c6e5ee5efa
2 changed files with 12 additions and 7 deletions

View file

@ -1,3 +1,8 @@
2012-06-02 Sergio Durigan Junior <sergiodj@redhat.com>
* symtab.c (symbol_demangled_name): New variable `dem_name'. Use
it to optimize resolution of demangled name.
2012-06-01 Jan Kratochvil <jan.kratochvil@redhat.com> 2012-06-01 Jan Kratochvil <jan.kratochvil@redhat.com>
* configure.ac (development): Define new variable. * configure.ac (development): Define new variable.

View file

@ -850,6 +850,8 @@ symbol_natural_name (const struct general_symbol_info *gsymbol)
const char * const char *
symbol_demangled_name (const struct general_symbol_info *gsymbol) symbol_demangled_name (const struct general_symbol_info *gsymbol)
{ {
const char *dem_name = NULL;
switch (gsymbol->language) switch (gsymbol->language)
{ {
case language_cplus: case language_cplus:
@ -858,19 +860,17 @@ symbol_demangled_name (const struct general_symbol_info *gsymbol)
case language_java: case language_java:
case language_objc: case language_objc:
case language_fortran: case language_fortran:
if (symbol_get_demangled_name (gsymbol) != NULL) dem_name = symbol_get_demangled_name (gsymbol);
return symbol_get_demangled_name (gsymbol);
break; break;
case language_ada: case language_ada:
if (symbol_get_demangled_name (gsymbol) != NULL) dem_name = symbol_get_demangled_name (gsymbol);
return symbol_get_demangled_name (gsymbol); if (dem_name == NULL)
else dem_name = ada_decode_symbol (gsymbol);
return ada_decode_symbol (gsymbol);
break; break;
default: default:
break; break;
} }
return NULL; return dem_name;
} }
/* Return the search name of a symbol---generally the demangled or /* Return the search name of a symbol---generally the demangled or