Precompute hash value for symbol_set_names
[deliverable/binutils-gdb.git] / gdb / symtab.c
index 8f46321f43d79019446180e62296d3f6a7c0a4d0..894a3230038eb312e7e593f531dd698acef4cc0a 100644 (file)
@@ -836,7 +836,8 @@ symbol_find_demangled_name (struct general_symbol_info *gsymbol,
 void
 symbol_set_names (struct general_symbol_info *gsymbol,
                  gdb::string_view linkage_name, bool copy_name,
-                 struct objfile_per_bfd_storage *per_bfd)
+                 struct objfile_per_bfd_storage *per_bfd,
+                 gdb::optional<hashval_t> hash)
 {
   struct demangled_name_entry **slot;
 
@@ -864,9 +865,11 @@ symbol_set_names (struct general_symbol_info *gsymbol,
     create_demangled_names_hash (per_bfd);
 
   struct demangled_name_entry entry (linkage_name);
+  if (!hash.has_value ())
+    hash = hash_demangled_name_entry (&entry);
   slot = ((struct demangled_name_entry **)
-         htab_find_slot (per_bfd->demangled_names_hash.get (),
-                         &entry, INSERT));
+          htab_find_slot_with_hash (per_bfd->demangled_names_hash.get (),
+                                   &entry, *hash, INSERT));
 
   /* If this name is not in the hash table, add it.  */
   if (*slot == NULL
This page took 0.02408 seconds and 4 git commands to generate.