mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 03:46:53 -05:00
symtab.h (HT_ALLOCED): Remove.
libcpp * include/symtab.h (HT_ALLOCED): Remove. (ht_purge): Declare. * symtab.c (DELETED): New define. (ht_lookup): Update comment. (ht_lookup_with_hash): Handle deleted entries. Remove HT_ALLOCED code. Use subobject allocator for strings, if it exists. (ht_expand): Handle deleted entries. (ht_forall): Likewise. (ht_purge): New function. (ht_dump_statistics): Print deletion statistics. gcc * ggc-zone.c (lookup_page_table_if_allocated): New function. (zone_find_object_offset): Likewise. (gt_ggc_m_S): Likewise. (highest_bit): Likewise. * ggc-page.c (gt_ggc_m_S): New function. * stringpool.c (string_stack): Remove. (init_stringpool): Update. (ggc_alloc_string): Use ggc_alloc. (maybe_delete_ident): New function. (ggc_purge_stringpool): Likewise. (gt_ggc_m_S): Remove. * ggc-common.c (ggc_protect_identifiers): New global. (ggc_mark_roots): Call ggc_purge_stringpool. Use ggc_protect_identifiers. * ggc.h (ggc_protect_identifiers): Declare. (gt_ggc_m_S): Update. (ggc_purge_stringpool): Declare. * toplev.c (compile_file): Set and reset ggc_protect_identifiers. * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove special case. (write_root): Cast gt_ggc_m_S to gt_pointer_walker. gcc/cp * mangle.c (save_partially_mangled_name): Remove. (restore_partially_mangled_name): Likewise. (write_encoding): Update. (write_unqualified_name): Likewise. (start_mangling): Always use name_obstack. Remove 'ident_p' argument. (get_identifier_nocopy): Remove. (finish_mangling_internal): Rename from finish_mangling. (finish_mangling): New function. (finish_mangling_get_identifier): Likewise. (partially_mangled_name, partially_mangled_name_len): Remove. (mangle_decl_string): Change return type. Update. (mangle_decl, mangle_type_string, mangle_special_for_type, mangle_ctor_vtbl_for_type, mangle_thunk, mangle_guard_variable, mangle_ref_init_variable): Update. From-SVN: r135720
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/* Hash tables.
|
||||
Copyright (C) 2000, 2001, 2003, 2004, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
@@ -39,7 +39,7 @@ struct ht_identifier GTY(())
|
||||
typedef struct ht hash_table;
|
||||
typedef struct ht_identifier *hashnode;
|
||||
|
||||
enum ht_lookup_option {HT_NO_INSERT = 0, HT_ALLOC, HT_ALLOCED};
|
||||
enum ht_lookup_option {HT_NO_INSERT = 0, HT_ALLOC};
|
||||
|
||||
/* An identifier hash table for cpplib and the front ends. */
|
||||
struct ht
|
||||
@@ -88,6 +88,10 @@ extern hashnode ht_lookup_with_hash (hash_table *, const unsigned char *,
|
||||
typedef int (*ht_cb) (struct cpp_reader *, hashnode, const void *);
|
||||
extern void ht_forall (hash_table *, ht_cb, const void *);
|
||||
|
||||
/* For all nodes in TABLE, call the callback. If the callback returns
|
||||
a nonzero value, the node is removed from the table. */
|
||||
extern void ht_purge (hash_table *, ht_cb, const void *);
|
||||
|
||||
/* Restore the hash table. */
|
||||
extern void ht_load (hash_table *ht, hashnode *entries,
|
||||
unsigned int nslots, unsigned int nelements, bool own);
|
||||
|
||||
Reference in New Issue
Block a user