Speed up psymbol reading by removing a copy
authorTom Tromey <tom@tromey.com>
Fri, 8 May 2020 20:14:05 +0000 (14:14 -0600)
committerTom Tromey <tromey@adacore.com>
Fri, 8 May 2020 20:14:06 +0000 (14:14 -0600)
commit596dc4adfff347b4d8dc1f7e4eb57b8f2f342281
tree612ad84effaac4a52857ea209f8297f0a1859340
parentbf4cb9bee210298c813f87aae005432d2e934449
Speed up psymbol reading by removing a copy

I noticed that cp_canonicalize_string and friends copy a
unique_xmalloc_ptr to a std::string.  However, this copy isn't
genuinely needed anywhere, and it serves to slow down DWARF psymbol
reading.

This patch removes the copy and updates the callers to adapt.

This speeds up the reader from 1.906 seconds (mean of 10 runs, of gdb
on a copy of itself) to 1.888 seconds (mean of 10 runs, on the same
copy as the first trial).

gdb/ChangeLog
2020-05-08  Tom Tromey  <tom@tromey.com>

* symtab.h (class demangle_result_storage) <set_malloc_ptr>: New
overload.
<swap_string, m_string>: Remove.
* symtab.c (demangle_for_lookup, completion_list_add_symbol):
Update.
* stabsread.c (define_symbol, read_type): Update.
* linespec.c (find_linespec_symbols): Update.
* gnu-v3-abi.c (gnuv3_get_typeid): Update.
* dwarf2/read.c (dwarf2_canonicalize_name): Update.
* dbxread.c (read_dbx_symtab): Update.
* cp-support.h (cp_canonicalize_string_full)
(cp_canonicalize_string, cp_canonicalize_string_no_typedefs):
Return unique_xmalloc_ptr.
* cp-support.c (inspect_type): Update.
(cp_canonicalize_string_full): Return unique_xmalloc_ptr.
(cp_canonicalize_string_no_typedefs, cp_canonicalize_string):
Likewise.
* c-typeprint.c (print_name_maybe_canonical): Update.
* break-catch-throw.c (check_status_exception_catchpoint):
Update.
13 files changed:
gdb/ChangeLog
gdb/break-catch-throw.c
gdb/c-exp.y
gdb/c-typeprint.c
gdb/cp-support.c
gdb/cp-support.h
gdb/dbxread.c
gdb/dwarf2/read.c
gdb/gnu-v3-abi.c
gdb/linespec.c
gdb/stabsread.c
gdb/symtab.c
gdb/symtab.h