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.
This commit is contained in:
parent
75cdede099
commit
fd90ace4c1
5 changed files with 50 additions and 24 deletions
12
gdb/block.c
12
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue