Change dwarf2_per_objfile::type_unit_groups to htab_up
authorTom Tromey <tom@tromey.com>
Sat, 8 Feb 2020 20:40:54 +0000 (13:40 -0700)
committerTom Tromey <tom@tromey.com>
Sat, 8 Feb 2020 20:43:24 +0000 (13:43 -0700)
This changes dwarf2_per_objfile::type_unit_groups to be an htab_up,
again allowing us to move the memory used by the hash table from the
objfile obstack to the heap.

2020-02-08  Tom Tromey  <tom@tromey.com>

* dwarf2/read.c (allocate_type_unit_groups_table): Return
htab_up.  Don't allocate on obstack.
(get_type_unit_group, dwarf2_build_psymtabs_hard): Update.
* dwarf2/read.h (struct dwarf2_per_objfile) <type_unit_groups>:
Change type to htab_up.

Change-Id: Ia045df0ff3ec30aac813da5a9a2314a607ef7ec8

gdb/ChangeLog
gdb/dwarf2/read.c
gdb/dwarf2/read.h

index 50aecc7bb0704c5f8b37f3e2f01adbd2246b26c0..7e603f0c9f134e5283f624a3d8afaf37ad7e1832 100644 (file)
@@ -1,3 +1,11 @@
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+       * dwarf2/read.c (allocate_type_unit_groups_table): Return
+       htab_up.  Don't allocate on obstack.
+       (get_type_unit_group, dwarf2_build_psymtabs_hard): Update.
+       * dwarf2/read.h (struct dwarf2_per_objfile) <type_unit_groups>:
+       Change type to htab_up.
+
 2020-02-08  Tom Tromey  <tom@tromey.com>
 
        * dwarf2/read.h (struct dwarf2_per_objfile) <signatured_types>:
index d47a90bac23e070fff0625d13e61f745d6387e5f..f6501c6b605998b21b50320a0112c5111e18453d 100644 (file)
@@ -7520,16 +7520,13 @@ eq_type_unit_group (const void *item_lhs, const void *item_rhs)
 
 /* Allocate a hash table for type unit groups.  */
 
-static htab_t
+static htab_up
 allocate_type_unit_groups_table (struct objfile *objfile)
 {
-  return htab_create_alloc_ex (3,
-                              hash_type_unit_group,
-                              eq_type_unit_group,
-                              NULL,
-                              &objfile->objfile_obstack,
-                              hashtab_obstack_allocate,
-                              dummy_obstack_deallocate);
+  return htab_up (htab_create_alloc (3,
+                                    hash_type_unit_group,
+                                    eq_type_unit_group,
+                                    NULL, xcalloc, xfree));
 }
 
 /* Type units that don't have DW_AT_stmt_list are grouped into their own
@@ -7625,7 +7622,7 @@ get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
 
   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
-  slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
+  slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups.get (),
                         &type_unit_group_for_lookup, INSERT);
   if (*slot != NULL)
     {
@@ -8193,7 +8190,7 @@ dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
   /* Now that all TUs have been processed we can fill in the dependencies.  */
   if (dwarf2_per_objfile->type_unit_groups != NULL)
     {
-      htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
+      htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups.get (),
                              build_type_psymtab_dependencies, dwarf2_per_objfile);
     }
 
index ac87258c664dd0eace2092b4c542d2aed8efc141..9e08cc1acde1db77133d8a5c93f33bfe3713a18a 100644 (file)
@@ -153,7 +153,7 @@ public:
 
   /* Table of struct type_unit_group objects.
      The hash key is the DW_AT_stmt_list value.  */
-  htab_t type_unit_groups {};
+  htab_up type_unit_groups;
 
   /* A table mapping .debug_types signatures to its signatured_type entry.
      This is NULL if the .debug_types section hasn't been read in yet.  */