From b453c95fd3fa689a6d70e8878848e5d6531e9ac5 Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Sun, 30 May 2004 00:49:06 +0000 Subject: Index: libcpp/ChangeLog 2004-05-29 Geoffrey Keating * symtab.c (ht_create): Set entries_owned. (ht_destroy): Honour entries_owned. (ht_expand): Likewise. (ht_load): New. Index: libcpp/include/ChangeLog 2004-05-29 Geoffrey Keating * symtab.h (struct ht): New field 'entries_owned' (ht_load): New prototype. Index: gcc/ChangeLog 2004-05-29 Geoffrey Keating * gengtype-yacc.y: Add NESTED_PTR token. (option): Record `nested_ptr' option. * gengtype-lex.l: Handle `nested_ptr' keyword. * gengtype.c (walk_type): Process `nested_ptr' option. * gengtype.h (struct nested_ptr_data): New. * doc/gty.texi (GTY Options): Document `nested_ptr' option. * stringpool.c (struct string_pool_data): Make 'entries' point to ht_identifier instead of tree. (gt_pch_save_stringpool): Don't adjust pointers. (gt_pch_restore_stringpool): Call ht_load. From-SVN: r82438 --- libcpp/include/ChangeLog | 5 +++++ libcpp/include/symtab.h | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'libcpp/include') diff --git a/libcpp/include/ChangeLog b/libcpp/include/ChangeLog index f6c47fa..a2f4bc5 100644 --- a/libcpp/include/ChangeLog +++ b/libcpp/include/ChangeLog @@ -1,3 +1,8 @@ +2004-05-29 Geoffrey Keating + + * symtab.h (struct ht): New field 'entries_owned' + (ht_load): New prototype. + 2004-05-23 Paolo Bonzini * cpplib.h: Moved from gcc. Change header guard name. diff --git a/libcpp/include/symtab.h b/libcpp/include/symtab.h index 8b79332..85e285b 100644 --- a/libcpp/include/symtab.h +++ b/libcpp/include/symtab.h @@ -1,5 +1,5 @@ /* Hash tables. - Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2003, 2004 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 @@ -58,6 +58,9 @@ struct ht /* Table usage statistics. */ unsigned int searches; unsigned int collisions; + + /* Should 'entries' be freed when it is no longer needed? */ + bool entries_owned; }; /* Initialize the hashtable with 2 ^ order entries. */ @@ -75,6 +78,10 @@ extern hashnode ht_lookup (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 *); +/* Restore the hash table. */ +extern void ht_load (hash_table *ht, hashnode *entries, + unsigned int nslots, unsigned int nelements, bool own); + /* Dump allocation statistics to stderr. */ extern void ht_dump_statistics (hash_table *); -- cgit v1.1