Make objfile::static_links an htab_up
This changes objfile::static_links to be an htab_up, so that ~objfile no longer has to explicitly destroy it. Tested by the buildbot. gdb/ChangeLog 2019-04-19 Tom Tromey <tom@tromey.com> * symfile.c (reread_symbols): Update. * objfiles.c (objfile_register_static_link) (objfile_lookup_static_link): Update (~objfile) Don't delete static_links. * objfiles.h (struct objfile) <static_links>: Now an htab_up.
This commit is contained in:
parent
61f4b35041
commit
cf250e3679
@ -1,3 +1,11 @@
|
||||
2019-04-19 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* symfile.c (reread_symbols): Update.
|
||||
* objfiles.c (objfile_register_static_link)
|
||||
(objfile_lookup_static_link): Update
|
||||
(~objfile) Don't delete static_links.
|
||||
* objfiles.h (struct objfile) <static_links>: Now an htab_up.
|
||||
|
||||
2019-04-19 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* type-stack.h (struct type_stack) <insert>: Constify string.
|
||||
|
@ -231,14 +231,14 @@ objfile_register_static_link (struct objfile *objfile,
|
||||
struct static_link_htab_entry *entry;
|
||||
|
||||
if (objfile->static_links == NULL)
|
||||
objfile->static_links = htab_create_alloc
|
||||
objfile->static_links.reset (htab_create_alloc
|
||||
(1, &static_link_htab_entry_hash, static_link_htab_entry_eq, NULL,
|
||||
xcalloc, xfree);
|
||||
xcalloc, xfree));
|
||||
|
||||
/* Create a slot for the mapping, make sure it's the first mapping for this
|
||||
block and then create the mapping itself. */
|
||||
lookup_entry.block = block;
|
||||
slot = htab_find_slot (objfile->static_links, &lookup_entry, INSERT);
|
||||
slot = htab_find_slot (objfile->static_links.get (), &lookup_entry, INSERT);
|
||||
gdb_assert (*slot == NULL);
|
||||
|
||||
entry = XOBNEW (&objfile->objfile_obstack, static_link_htab_entry);
|
||||
@ -260,9 +260,8 @@ objfile_lookup_static_link (struct objfile *objfile,
|
||||
if (objfile->static_links == NULL)
|
||||
return NULL;
|
||||
lookup_entry.block = block;
|
||||
entry
|
||||
= (struct static_link_htab_entry *) htab_find (objfile->static_links,
|
||||
&lookup_entry);
|
||||
entry = ((struct static_link_htab_entry *)
|
||||
htab_find (objfile->static_links.get (), &lookup_entry));
|
||||
if (entry == NULL)
|
||||
return NULL;
|
||||
|
||||
@ -691,11 +690,6 @@ objfile::~objfile ()
|
||||
|
||||
/* Rebuild section map next time we need it. */
|
||||
get_objfile_pspace_data (pspace)->section_map_dirty = 1;
|
||||
|
||||
/* Free the map for static links. There's no need to free static link
|
||||
themselves since they were allocated on the objstack. */
|
||||
if (static_links != NULL)
|
||||
htab_delete (static_links);
|
||||
}
|
||||
|
||||
/* Free all the object files at once and clean up their users. */
|
||||
|
@ -615,7 +615,7 @@ struct objfile
|
||||
Very few blocks have a static link, so it's more memory efficient to
|
||||
store these here rather than in struct block. Static links must be
|
||||
allocated on the objfile's obstack. */
|
||||
htab_t static_links {};
|
||||
htab_up static_links;
|
||||
};
|
||||
|
||||
/* Declarations for functions defined in objfiles.c */
|
||||
|
@ -2549,7 +2549,7 @@ reread_symbols (void)
|
||||
objfile->sections = NULL;
|
||||
objfile->compunit_symtabs = NULL;
|
||||
objfile->template_symbols = NULL;
|
||||
objfile->static_links = NULL;
|
||||
objfile->static_links.reset (nullptr);
|
||||
|
||||
/* obstack_init also initializes the obstack so it is
|
||||
empty. We could use obstack_specify_allocation but
|
||||
|
Loading…
x
Reference in New Issue
Block a user