diff options
author | Yao Qi <yao.qi@linaro.org> | 2018-02-16 16:20:58 +0000 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2018-02-16 16:20:58 +0000 |
commit | fd90ace4c1e77c94e90d2942cebe84e9a2019c0f (patch) | |
tree | 238171dee65bdaa736aadcc8413208f70f084a54 /gdb/block.c | |
parent | 75cdede09952b5aa8c6d4ceb0de10c5e93002a6d (diff) | |
download | gdb-fd90ace4c1e77c94e90d2942cebe84e9a2019c0f.zip gdb-fd90ace4c1e77c94e90d2942cebe84e9a2019c0f.tar.gz gdb-fd90ace4c1e77c94e90d2942cebe84e9a2019c0f.tar.bz2 |
New class allocate_on_obstack
This patch adds a new class allocate_on_obstack, and let dwarf2_per_objfile
inherit it, so that dwarf2_per_objfile is automatically allocated on
obstack, and "delete dwarf2_per_objfile" doesn't de-allocate any space.
gdb:
2018-02-16 Yao Qi <yao.qi@linaro.org>
* block.c (block_namespace_info): Inherit allocate_on_obstack.
(block_initialize_namespace): Use new.
* dwarf2read.c (dwarf2_per_objfile): Inherit allocate_on_obstack.
(dwarf2_free_objfile): Use delete.
* gdbtypes.c (type_pair): Inherit allocate_on_obstack.
(copy_type_recursive): Use new.
* gdb_obstack.h (allocate_on_obstack): New.
Diffstat (limited to 'gdb/block.c')
-rw-r--r-- | gdb/block.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/gdb/block.c b/gdb/block.c index 57da7ba..f26d169 100644 --- a/gdb/block.c +++ b/gdb/block.c @@ -31,10 +31,10 @@ C++ files, namely using declarations and the current namespace in scope. */ -struct block_namespace_info +struct block_namespace_info : public allocate_on_obstack { - const char *scope; - struct using_direct *using_decl; + const char *scope = nullptr; + struct using_direct *using_decl = nullptr; }; static void block_initialize_namespace (struct block *block, @@ -350,11 +350,7 @@ static void block_initialize_namespace (struct block *block, struct obstack *obstack) { if (BLOCK_NAMESPACE (block) == NULL) - { - BLOCK_NAMESPACE (block) = XOBNEW (obstack, struct block_namespace_info); - BLOCK_NAMESPACE (block)->scope = NULL; - BLOCK_NAMESPACE (block)->using_decl = NULL; - } + BLOCK_NAMESPACE (block) = new (obstack) struct block_namespace_info (); } /* Return the static block associated to BLOCK. Return NULL if block |