Commit 7e8f3096 by Andrew Pinski Committed by Gabriel Dos Reis

name-lookup.c (free_binding_entry): fix where the GTY markers are.

	* name-lookup.c (free_binding_entry): fix where the GTY markers are.
	(binding_entry_make): Make entry->chain NULL after getting an entry.
	fix the spelling of chain in a comment.
	(binding_table_free): speed up by having temporary variable.
	(binding_table_new): set table->chain to be NULL after allocating
	a table.
	(cxx_binding_make): use gcc_alloc instead of ggc_alloc_cleared and set
	binding->previous to NULL after getting an binding for speed.

From-SVN: r66948
parent 1c745a02
2003-05-18 Andrew Pinski <pinskia@physics.uc.edu>
* name-lookup.c (free_binding_entry): fix where the GTY markers are.
(binding_entry_make): Make entry->chain NULL after getting an entry.
fix the spelling of chain in a comment.
(binding_table_free): speed up by having temporary variable.
(binding_table_new): set table->chain to be NULL after allocating
a table.
(cxx_binding_make): use gcc_alloc instead of ggc_alloc_cleared and set
binding->previous to NULL after getting an binding for speed.
2003-05-18 Gabriel Dos Reis <gdr@integrable-solutions.net> 2003-05-18 Gabriel Dos Reis <gdr@integrable-solutions.net>
* cp-tree.h (struct lang_type_class): Replace data member tags * cp-tree.h (struct lang_type_class): Replace data member tags
......
...@@ -34,7 +34,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -34,7 +34,7 @@ Boston, MA 02111-1307, USA. */
#define ENTRY_INDEX(HASH, COUNT) (((HASH) >> 3) & ((COUNT) - 1)) #define ENTRY_INDEX(HASH, COUNT) (((HASH) >> 3) & ((COUNT) - 1))
/* A free list of "binding_entry"s awaiting for re-use. */ /* A free list of "binding_entry"s awaiting for re-use. */
static binding_entry GTY((deletable(""))) free_binding_entry; static GTY((deletable(""))) binding_entry free_binding_entry = NULL;
/* Create a binding_entry object for (NAME, TYPE). */ /* Create a binding_entry object for (NAME, TYPE). */
static inline binding_entry static inline binding_entry
...@@ -52,6 +52,7 @@ binding_entry_make (tree name, tree type) ...@@ -52,6 +52,7 @@ binding_entry_make (tree name, tree type)
entry->name = name; entry->name = name;
entry->type = type; entry->type = type;
entry->chain = NULL;
return entry; return entry;
} }
...@@ -72,7 +73,7 @@ struct binding_table_s GTY(()) ...@@ -72,7 +73,7 @@ struct binding_table_s GTY(())
binding_entry * GTY((length ("%h.chain_count"))) chain; binding_entry * GTY((length ("%h.chain_count"))) chain;
/* The number of chains in this table. This is the length of the /* The number of chains in this table. This is the length of the
the member "chaiin" considered as an array. */ the member "chain" considered as an array. */
size_t chain_count; size_t chain_count;
/* Number of "binding_entry"s in this table. */ /* Number of "binding_entry"s in this table. */
...@@ -99,12 +100,15 @@ binding_table_free (binding_table table) ...@@ -99,12 +100,15 @@ binding_table_free (binding_table table)
for (i = 0; i < table->chain_count; ++i) for (i = 0; i < table->chain_count; ++i)
{ {
while (table->chain[i] != NULL) binding_entry temp = table->chain[i];
while (temp != NULL)
{ {
binding_entry entry = table->chain[i]; binding_entry entry = temp;
table->chain[i] = entry->chain; temp = entry->chain;
entry->chain = NULL; // just be sure
binding_entry_free (entry); binding_entry_free (entry);
} }
table->chain[i] = temp;
} }
table->entry_count = 0; table->entry_count = 0;
} }
...@@ -114,6 +118,7 @@ binding_table ...@@ -114,6 +118,7 @@ binding_table
binding_table_new (size_t chain_count) binding_table_new (size_t chain_count)
{ {
binding_table table = ggc_alloc (sizeof (struct binding_table_s)); binding_table table = ggc_alloc (sizeof (struct binding_table_s));
table->chain = NULL;
binding_table_construct (table, chain_count); binding_table_construct (table, chain_count);
return table; return table;
} }
...@@ -277,10 +282,11 @@ cxx_binding_make (tree value, tree type) ...@@ -277,10 +282,11 @@ cxx_binding_make (tree value, tree type)
free_bindings = binding->previous; free_bindings = binding->previous;
} }
else else
binding = ggc_alloc_cleared (sizeof (cxx_binding)); binding = ggc_alloc (sizeof (cxx_binding));
binding->value = value; binding->value = value;
binding->type = type; binding->type = type;
binding->previous = NULL;
return binding; return binding;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment