Change dwarf2_per_objfile::line_header_hash to htab_up
This changes dwarf2_per_objfile::line_header_hash to be an htab_up, and changes it to use heap allocation. 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/read.c (~dwarf2_per_objfile): Don't delete line_header_hash. (handle_DW_AT_stmt_list): Update. Don't allocate on obstack. * dwarf2/read.h (struct dwarf2_per_objfile) <line_header_hash>: Change type to htab_up. Change-Id: Icb148a270838c0f96f38fc4a28b5b77d067927b6
This commit is contained in:
parent
eaa5fa8b29
commit
d15acc4252
|
@ -1,3 +1,11 @@
|
|||
2020-02-08 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* dwarf2/read.c (~dwarf2_per_objfile): Don't delete
|
||||
line_header_hash.
|
||||
(handle_DW_AT_stmt_list): Update. Don't allocate on obstack.
|
||||
* dwarf2/read.h (struct dwarf2_per_objfile) <line_header_hash>:
|
||||
Change type to htab_up.
|
||||
|
||||
2020-02-08 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* dwarf2/read.c (allocate_type_unit_groups_table): Return
|
||||
|
|
|
@ -2014,9 +2014,6 @@ dwarf2_per_objfile::~dwarf2_per_objfile ()
|
|||
if (quick_file_names_table)
|
||||
htab_delete (quick_file_names_table);
|
||||
|
||||
if (line_header_hash)
|
||||
htab_delete (line_header_hash);
|
||||
|
||||
for (dwarf2_per_cu_data *per_cu : all_comp_units)
|
||||
per_cu->imported_symtabs_free ();
|
||||
|
||||
|
@ -11059,7 +11056,6 @@ handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
|
|||
{
|
||||
struct dwarf2_per_objfile *dwarf2_per_objfile
|
||||
= cu->per_cu->dwarf2_per_objfile;
|
||||
struct objfile *objfile = dwarf2_per_objfile->objfile;
|
||||
struct attribute *attr;
|
||||
struct line_header line_header_local;
|
||||
hashval_t line_header_local_hash;
|
||||
|
@ -11084,12 +11080,10 @@ handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
|
|||
&& die->tag == DW_TAG_partial_unit)
|
||||
{
|
||||
dwarf2_per_objfile->line_header_hash
|
||||
= htab_create_alloc_ex (127, line_header_hash_voidp,
|
||||
line_header_eq_voidp,
|
||||
free_line_header_voidp,
|
||||
&objfile->objfile_obstack,
|
||||
hashtab_obstack_allocate,
|
||||
dummy_obstack_deallocate);
|
||||
.reset (htab_create_alloc (127, line_header_hash_voidp,
|
||||
line_header_eq_voidp,
|
||||
free_line_header_voidp,
|
||||
xcalloc, xfree));
|
||||
}
|
||||
|
||||
line_header_local.sect_off = line_offset;
|
||||
|
@ -11097,7 +11091,7 @@ handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
|
|||
line_header_local_hash = line_header_hash (&line_header_local);
|
||||
if (dwarf2_per_objfile->line_header_hash != NULL)
|
||||
{
|
||||
slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
|
||||
slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash.get (),
|
||||
&line_header_local,
|
||||
line_header_local_hash, NO_INSERT);
|
||||
|
||||
|
@ -11125,7 +11119,7 @@ handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
|
|||
slot = NULL;
|
||||
else
|
||||
{
|
||||
slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
|
||||
slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash.get (),
|
||||
&line_header_local,
|
||||
line_header_local_hash, INSERT);
|
||||
gdb_assert (slot != NULL);
|
||||
|
|
|
@ -220,7 +220,7 @@ public:
|
|||
std::vector<dwarf2_per_cu_data *> just_read_cus;
|
||||
|
||||
/* Table containing line_header indexed by offset and offset_in_dwz. */
|
||||
htab_t line_header_hash {};
|
||||
htab_up line_header_hash;
|
||||
|
||||
/* Table containing all filenames. This is an optional because the
|
||||
table is lazily constructed on first access. */
|
||||
|
|
Loading…
Reference in New Issue