diff options
author | Tom Tromey <tom@tromey.com> | 2020-09-17 11:47:50 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2020-09-17 11:58:56 -0600 |
commit | 6108fd1823f9cf036bbbe528ffcdf2fee489b40a (patch) | |
tree | 0be755427c836f6981902a0a49b5b84f0f36f4dc | |
parent | fa9b11648c07ecb02a9c038304d646a5c652a5e7 (diff) | |
download | gdb-6108fd1823f9cf036bbbe528ffcdf2fee489b40a.zip gdb-6108fd1823f9cf036bbbe528ffcdf2fee489b40a.tar.gz gdb-6108fd1823f9cf036bbbe528ffcdf2fee489b40a.tar.bz2 |
Use htab_up in type copying
This changes create_copied_types_hash to return an htab_up, then
modifies the callers to avoid explicit use of htab_delete.
gdb/ChangeLog
2020-09-17 Tom Tromey <tom@tromey.com>
* value.c (preserve_values): Update.
* python/py-type.c (save_objfile_types): Update.
* guile/scm-type.c (save_objfile_types): Update.
* gdbtypes.h (create_copied_types_hash): Return htab_up.
* gdbtypes.c (create_copied_types_hash): Return htab_up.
* compile/compile-object-run.c (compile_object_run): Update.
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/compile/compile-object-run.c | 6 | ||||
-rw-r--r-- | gdb/gdbtypes.c | 10 | ||||
-rw-r--r-- | gdb/gdbtypes.h | 2 | ||||
-rw-r--r-- | gdb/guile/scm-type.c | 7 | ||||
-rw-r--r-- | gdb/python/py-type.c | 10 | ||||
-rw-r--r-- | gdb/value.c | 11 |
7 files changed, 27 insertions, 28 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 375fa33..b7e93c1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,14 @@ 2020-09-17 Tom Tromey <tom@tromey.com> + * value.c (preserve_values): Update. + * python/py-type.c (save_objfile_types): Update. + * guile/scm-type.c (save_objfile_types): Update. + * gdbtypes.h (create_copied_types_hash): Return htab_up. + * gdbtypes.c (create_copied_types_hash): Return htab_up. + * compile/compile-object-run.c (compile_object_run): Update. + +2020-09-17 Tom Tromey <tom@tromey.com> + * typeprint.h (class typedef_hash_table) <~typedef_hash_table>: Remove. <m_table>: Now htab_up. diff --git a/gdb/compile/compile-object-run.c b/gdb/compile/compile-object-run.c index a2f3990..533478a 100644 --- a/gdb/compile/compile-object-run.c +++ b/gdb/compile/compile-object-run.c @@ -140,14 +140,12 @@ compile_object_run (struct compile_module *module) try { struct type *func_type = SYMBOL_TYPE (func_sym); - htab_t copied_types; int current_arg = 0; struct value **vargs; /* OBJFILE may disappear while FUNC_TYPE still will be in use. */ - copied_types = create_copied_types_hash (objfile); - func_type = copy_type_recursive (objfile, func_type, copied_types); - htab_delete (copied_types); + htab_up copied_types = create_copied_types_hash (objfile); + func_type = copy_type_recursive (objfile, func_type, copied_types.get ()); gdb_assert (func_type->code () == TYPE_CODE_FUNC); func_val = value_from_pointer (lookup_pointer_type (func_type), diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index f1f4ec5..63f0d7c 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -5227,13 +5227,13 @@ type_pair_eq (const void *item_lhs, const void *item_rhs) types without duplicates. We use OBJFILE's obstack, because OBJFILE is about to be deleted. */ -htab_t +htab_up create_copied_types_hash (struct objfile *objfile) { - return htab_create_alloc_ex (1, type_pair_hash, type_pair_eq, - NULL, &objfile->objfile_obstack, - hashtab_obstack_allocate, - dummy_obstack_deallocate); + return htab_up (htab_create_alloc_ex (1, type_pair_hash, type_pair_eq, + NULL, &objfile->objfile_obstack, + hashtab_obstack_allocate, + dummy_obstack_deallocate)); } /* Recursively copy (deep copy) a dynamic attribute list of a type. */ diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index d28622d..4b67efe 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -2472,7 +2472,7 @@ extern int class_or_union_p (const struct type *); extern void maintenance_print_type (const char *, int); -extern htab_t create_copied_types_hash (struct objfile *objfile); +extern htab_up create_copied_types_hash (struct objfile *objfile); extern struct type *copy_type_recursive (struct objfile *objfile, struct type *type, diff --git a/gdb/guile/scm-type.c b/gdb/guile/scm-type.c index 19b7996..8fc9629 100644 --- a/gdb/guile/scm-type.c +++ b/gdb/guile/scm-type.c @@ -387,20 +387,17 @@ static void save_objfile_types (struct objfile *objfile, void *datum) { htab_t htab = (htab_t) datum; - htab_t copied_types; if (!gdb_scheme_initialized) return; - copied_types = create_copied_types_hash (objfile); + htab_up copied_types = create_copied_types_hash (objfile); if (htab != NULL) { - htab_traverse_noresize (htab, tyscm_copy_type_recursive, copied_types); + htab_traverse_noresize (htab, tyscm_copy_type_recursive, copied_types.get ()); htab_delete (htab); } - - htab_delete (copied_types); } /* Administrivia for field smobs. */ diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c index 951dac2..55d8264 100644 --- a/gdb/python/py-type.c +++ b/gdb/python/py-type.c @@ -1066,7 +1066,6 @@ static void save_objfile_types (struct objfile *objfile, void *datum) { type_object *obj = (type_object *) datum; - htab_t copied_types; if (!gdb_python_initialized) return; @@ -1075,23 +1074,22 @@ save_objfile_types (struct objfile *objfile, void *datum) operating on. */ gdbpy_enter enter_py (objfile->arch (), current_language); - copied_types = create_copied_types_hash (objfile); + htab_up copied_types = create_copied_types_hash (objfile); while (obj) { type_object *next = obj->next; - htab_empty (copied_types); + htab_empty (copied_types.get ()); - obj->type = copy_type_recursive (objfile, obj->type, copied_types); + obj->type = copy_type_recursive (objfile, obj->type, + copied_types.get ()); obj->next = NULL; obj->prev = NULL; obj = next; } - - htab_delete (copied_types); } static void diff --git a/gdb/value.c b/gdb/value.c index c8d9414..4b28213 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -2519,22 +2519,19 @@ preserve_one_internalvar (struct internalvar *var, struct objfile *objfile, void preserve_values (struct objfile *objfile) { - htab_t copied_types; struct internalvar *var; /* Create the hash table. We allocate on the objfile's obstack, since it is soon to be deleted. */ - copied_types = create_copied_types_hash (objfile); + htab_up copied_types = create_copied_types_hash (objfile); for (const value_ref_ptr &item : value_history) - preserve_one_value (item.get (), objfile, copied_types); + preserve_one_value (item.get (), objfile, copied_types.get ()); for (var = internalvars; var; var = var->next) - preserve_one_internalvar (var, objfile, copied_types); + preserve_one_internalvar (var, objfile, copied_types.get ()); - preserve_ext_lang_values (objfile, copied_types); - - htab_delete (copied_types); + preserve_ext_lang_values (objfile, copied_types.get ()); } static void |