public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Speed up psymbol reading by removing a copy
@ 2020-04-04 19:35 Tom Tromey
  2020-04-18 15:11 ` Tom Tromey
  0 siblings, 1 reply; 5+ messages in thread
From: Tom Tromey @ 2020-04-04 19:35 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

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-04-04  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.
---
 gdb/ChangeLog           | 23 +++++++++++++++++++++++
 gdb/break-catch-throw.c |  2 +-
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/gdb/break-catch-throw.c b/gdb/break-catch-throw.c
index 7c684de40b6..59293c4e570 100644
--- a/gdb/break-catch-throw.c
+++ b/gdb/break-catch-throw.c
@@ -148,7 +148,6 @@ check_status_exception_catchpoint (struct bpstats *bs)
   struct exception_catchpoint *self
     = (struct exception_catchpoint *) bs->breakpoint_at;
   std::string type_name;
-  gdb::unique_xmalloc_ptr<char> canon;
 
   bkpt_breakpoint_ops.check_status (bs);
   if (bs->stop == 0)
@@ -158,6 +157,7 @@ check_status_exception_catchpoint (struct bpstats *bs)
     return;
 
   const char *name = nullptr;
+  gdb::unique_xmalloc_ptr<char> canon;
   try
     {
       struct value *typeinfo_arg;
-- 
2.17.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-05-11 16:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-04 19:35 [PATCH] Speed up psymbol reading by removing a copy Tom Tromey
2020-04-18 15:11 ` Tom Tromey
2020-05-08 20:15   ` Tom Tromey
2020-05-09 18:18     ` [committed][gdb] Fix catch throw regexp matching Tom de Vries
2020-05-11 16:42       ` Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).