binutils-gdb/gdb/dwarf2
Tom Tromey be1e3d3eab Introduce objfile::intern
This introduces a string cache on the per-BFD object, replacing the
macro and filename caches.  Both of these caches just store strings,
so this consolidation by itself saves a little memory (about the size
of a bcache per objfile).

Then this patch switches some allocations on the objfile obstack to
use this bcache instead.  This saves more space; and turns out to be a
bit faster as well.

Here are the before and after "maint time" + "maint space" results of
"file ./gdb":

    Command execution time: 4.664021 (cpu), 4.728518 (wall)
    Space used: 39190528 (+29212672 for this command)

    Command execution time: 4.216209 (cpu), 4.107023 (wall)
    Space used: 36667392 (+26689536 for this command)

The main interface to the string cache is a new pair of overloaded
methods, objfile::intern.

gdb/ChangeLog
2020-03-04  Tom Tromey  <tom@tromey.com>

	* symmisc.c (print_symbol_bcache_statistics)
	(print_objfile_statistics): Update.
	* symfile.c (allocate_symtab): Use intern.
	* psymtab.c (partial_symtab::partial_symtab): Use intern.
	* objfiles.h (struct objfile_per_bfd_storage) <filename_cache,
	macro_cache>: Remove.
	<string_cache>: New member.
	(struct objfile) <intern>: New methods.
	* elfread.c (elf_symtab_read): Use intern.
	* dwarf2/read.c (fixup_go_packaging): Intern package name.
	(dwarf2_compute_name, dwarf2_physname)
	(create_dwo_unit_in_dwp_v1, create_dwo_unit_in_dwp_v2): Intern
	names.
	(guess_partial_die_structure_name): Update.
	(partial_die_info::fixup): Intern name.
	(dwarf2_canonicalize_name): Change parameter to objfile.  Intern
	name.
	(dwarf2_name): Intern name.  Update.
	* buildsym.c (buildsym_compunit::get_macro_table): Use
	string_cache.
2020-03-04 16:34:49 -07:00
..
abbrev.c Minor simplification in abbrev_table::read 2020-02-08 13:43:24 -07:00
abbrev.h Use htab_up in abbrev_table 2020-02-08 13:43:24 -07:00
attribute.c
attribute.h
comp-unit.c Convert read_address to a method on comp_unit_head 2020-02-08 13:43:24 -07:00
comp-unit.h Convert read_address to a method on comp_unit_head 2020-02-08 13:43:24 -07:00
expr.c Move DWARF code to dwarf2/ subdirectory 2020-02-08 13:40:59 -07:00
expr.h Move DWARF code to dwarf2/ subdirectory 2020-02-08 13:40:59 -07:00
frame-tailcall.c Return unique_xmalloc_ptr from call_site_find_chain 2020-02-14 12:38:04 -07:00
frame-tailcall.h Move DWARF code to dwarf2/ subdirectory 2020-02-08 13:40:59 -07:00
frame.c Find tailcall frames before inline frames 2020-03-03 15:27:04 -07:00
frame.h Don't forward-declare struct objfile in dwarf2/frame.h 2020-02-11 17:57:46 -07:00
index-cache.c Move DWARF code to dwarf2/ subdirectory 2020-02-08 13:40:59 -07:00
index-cache.h Move DWARF code to dwarf2/ subdirectory 2020-02-08 13:40:59 -07:00
index-common.c Move DWARF code to dwarf2/ subdirectory 2020-02-08 13:40:59 -07:00
index-common.h Move DWARF code to dwarf2/ subdirectory 2020-02-08 13:40:59 -07:00
index-write.c Remove casts from dwarf2/index-write.c 2020-02-26 15:49:50 -07:00
index-write.h Move DWARF code to dwarf2/ subdirectory 2020-02-08 13:40:59 -07:00
leb.c Move read_offset_1 to leb.c 2020-02-08 13:43:24 -07:00
leb.h Move two more functions to dwarf2/leb.h 2020-02-08 13:43:24 -07:00
line-header.c Move DWARF line_header to new file 2020-02-08 13:43:24 -07:00
line-header.h Move DWARF line_header to new file 2020-02-08 13:43:24 -07:00
loc.c Make dwarf2_compile_expr_to_ax static 2020-02-22 13:49:56 -07:00
loc.h Move more declarations from dwarf2/loc.h to dwarf2/read.h 2020-02-26 09:36:44 -05:00
read.c Introduce objfile::intern 2020-03-04 16:34:49 -07:00
read.h Move more declarations from dwarf2/loc.h to dwarf2/read.h 2020-02-26 09:36:44 -05:00
section.c
section.h Convert dwarf2_section_size to a method 2020-02-08 13:43:24 -07:00