Remove free_pendings

buildsym.c currently keeps a free list of "struct pending"s.  However,
this didn't seem necessary to me, and so this patch removes the free
list.

gdb/ChangeLog
2018-07-20  Tom Tromey  <tom@tromey.com>

	* buildsym.c (free_pendings): Remove.
	(add_symbol_to_list, scoped_free_pendings)
	(finish_block_internal, buildsym_init): Update.
This commit is contained in:
Tom Tromey 2018-05-21 08:35:43 -06:00
parent c233e9c641
commit 1d376700df
2 changed files with 9 additions and 25 deletions

View File

@ -1,3 +1,9 @@
2018-07-20 Tom Tromey <tom@tromey.com>
* buildsym.c (free_pendings): Remove.
(add_symbol_to_list, scoped_free_pendings)
(finish_block_internal, buildsym_init): Update.
2018-07-20 Tom Tromey <tom@tromey.com>
* xcoffread.c (read_xcoff_symtab): Update.

View File

@ -256,10 +256,6 @@ struct buildsym_compunit
static struct buildsym_compunit *buildsym_compunit;
/* List of free `struct pending' structures for reuse. */
static struct pending *free_pendings;
/* List of blocks already made (lexical contexts already closed).
This is used at the end to make the blockvector. */
@ -301,16 +297,7 @@ add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
don't have a link with room in it, add a new link. */
if (*listhead == NULL || (*listhead)->nsyms == PENDINGSIZE)
{
if (free_pendings)
{
link = free_pendings;
free_pendings = link->next;
}
else
{
link = XNEW (struct pending);
}
link = XNEW (struct pending);
link->next = *listhead;
*listhead = link;
link->nsyms = 0;
@ -354,13 +341,6 @@ scoped_free_pendings::~scoped_free_pendings ()
{
struct pending *next, *next1;
for (next = free_pendings; next; next = next1)
{
next1 = next->next;
xfree ((void *) next);
}
free_pendings = NULL;
for (next = file_symbols; next != NULL; next = next1)
{
next1 = next->next;
@ -482,13 +462,12 @@ finish_block_internal (struct symbol *symbol,
if (static_link != NULL)
objfile_register_static_link (objfile, block, static_link);
/* Now "free" the links of the list, and empty the list. */
/* Now free the links of the list, and empty the list. */
for (next = *listhead; next; next = next1)
{
next1 = next->next;
next->next = free_pendings;
free_pendings = next;
xfree (next);
}
*listhead = NULL;
@ -1753,7 +1732,6 @@ buildsym_init ()
{
/* Ensure the scoped_free_pendings destructor was called after
the last time. */
gdb_assert (free_pendings == NULL);
gdb_assert (file_symbols == NULL);
gdb_assert (global_symbols == NULL);
gdb_assert (buildsym_compunit == NULL);