[binutils-gdb] Use htab_up for demangled hash

Tom Tromey tromey@sourceware.org
Fri Mar 15 22:08:00 GMT 2019


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=db92718b541158d4782dbc9f48401c20f2bbad6d

commit db92718b541158d4782dbc9f48401c20f2bbad6d
Author: Tom Tromey <tom@tromey.com>
Date:   Sat Mar 2 12:18:05 2019 -0700

    Use htab_up for demangled hash
    
    This changes objfile_per_bfd_storage::demangled_names_hash to be an
    htab_up.  This lets us remove some manual management code from the
    objfile_per_bfd_storage destructor.
    
    gdb/ChangeLog
    2019-03-15  Tom Tromey  <tom@tromey.com>
    
    	* symtab.c (create_demangled_names_hash): Update.
    	(symbol_set_names): Update.
    	* objfiles.h (struct objfile_per_bfd_storage)
    	<demangled_names_hash>: Now an htab_up.
    	* objfiles.c (objfile_per_bfd_storage): Simplify.

Diff:
---
 gdb/ChangeLog  | 8 ++++++++
 gdb/objfiles.c | 2 --
 gdb/objfiles.h | 2 +-
 gdb/symtab.c   | 6 +++---
 4 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 13c207d..3a95320 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
 2019-03-15  Tom Tromey  <tom@tromey.com>
 
+	* symtab.c (create_demangled_names_hash): Update.
+	(symbol_set_names): Update.
+	* objfiles.h (struct objfile_per_bfd_storage)
+	<demangled_names_hash>: Now an htab_up.
+	* objfiles.c (objfile_per_bfd_storage): Simplify.
+
+2019-03-15  Tom Tromey  <tom@tromey.com>
+
 	* objfiles.h (struct objfile_per_bfd_storage): Declare
 	destructor.
 	* objfiles.c (objfile_per_bfd_storage::~objfile_per_bfd_storage):
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index ff8b6fc..7d36a2a 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -119,8 +119,6 @@ static const struct bfd_data *objfiles_bfd_data;
 
 objfile_per_bfd_storage::~objfile_per_bfd_storage ()
 {
-  if (demangled_names_hash)
-    htab_delete (demangled_names_hash);
 }
 
 /* Create the per-BFD storage object for OBJFILE.  If ABFD is not
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index 6f8eb7f..1fa6f3c 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -262,7 +262,7 @@ struct objfile_per_bfd_storage
      name, and the second is the demangled name or just a zero byte
      if the name doesn't demangle.  */
 
-  htab *demangled_names_hash = NULL;
+  htab_up demangled_names_hash;
 
   /* The per-objfile information about the entry point, the scope (file/func)
      containing the entry point, and the scope of the user's main() func.  */
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 005ea23..449bc4c 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -740,9 +740,9 @@ create_demangled_names_hash (struct objfile_per_bfd_storage *per_bfd)
      Choosing a much larger table size wastes memory, and saves only about
      1% in symbol reading.  */
 
-  per_bfd->demangled_names_hash = htab_create_alloc
+  per_bfd->demangled_names_hash.reset (htab_create_alloc
     (256, hash_demangled_name_entry, eq_demangled_name_entry,
-     NULL, xcalloc, xfree);
+     NULL, xcalloc, xfree));
 }
 
 /* Try to determine the demangled name for a symbol, based on the
@@ -848,7 +848,7 @@ symbol_set_names (struct general_symbol_info *gsymbol,
 
   entry.mangled = linkage_name_copy;
   slot = ((struct demangled_name_entry **)
-	  htab_find_slot (per_bfd->demangled_names_hash,
+	  htab_find_slot (per_bfd->demangled_names_hash.get (),
 			  &entry, INSERT));
 
   /* If this name is not in the hash table, add it.  */



More information about the Gdb-cvs mailing list