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/gdb_obstack.h | |
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/gdb_obstack.h')
-rw-r--r-- | gdb/gdb_obstack.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gdb/gdb_obstack.h b/gdb/gdb_obstack.h index 12a90c3..1011008 100644 --- a/gdb/gdb_obstack.h +++ b/gdb/gdb_obstack.h @@ -78,4 +78,24 @@ struct auto_obstack : obstack { obstack_free (this, obstack_base (this)); } }; +/* Objects are allocated on obstack instead of heap. */ + +struct allocate_on_obstack +{ + allocate_on_obstack () = default; + + void* operator new (size_t size, struct obstack *obstack) + { + return obstack_alloc (obstack, size); + } + + void* operator new[] (size_t size, struct obstack *obstack) + { + return obstack_alloc (obstack, size); + } + + void operator delete (void *memory) {} + void operator delete[] (void *memory) {} +}; + #endif |