This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 6/9] move macro cache to bfd
- From: Tom Tromey <tromey at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Mon, 30 Jul 2012 09:22:13 -0600
- Subject: [PATCH 6/9] move macro cache to bfd
This patch moves the macro cache to the objfile per-BFD storage.
* dwarf2read.c (macro_start_file): Update.
* objfiles.c (get_objfile_bfd_data): Initialize macro_cache.
(free_objfile_per_bfd_storage): Destroy macro_cache.
(allocate_objfile, free_objfile): Update.
* objfiles.h (struct objfile_per_bfd_storage) <macro_cache>:
New field.
(struct objfile) <macro_cache>: Remove.
* symfile.c (reread_symbols): Update.
* symmisc.c (print_symbol_bcache_statistics): Update.
(print_objfile_statistics): Update.
---
gdb/dwarf2read.c | 4 ++--
gdb/objfiles.c | 4 ++--
gdb/objfiles.h | 4 +++-
gdb/symfile.c | 2 --
gdb/symmisc.c | 5 +++--
5 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 8295857..b98e486 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -17082,8 +17082,8 @@ macro_start_file (int file, int line,
/* We don't create a macro table for this compilation unit
at all until we actually get a filename. */
if (! pending_macros)
- pending_macros = new_macro_table (&objfile->objfile_obstack,
- objfile->macro_cache);
+ pending_macros = new_macro_table (&objfile->per_bfd->storage_obstack,
+ objfile->per_bfd->macro_cache);
if (! current_file)
{
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 09268ff..d279af0 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -133,6 +133,7 @@ get_objfile_bfd_data (struct objfile *objfile, struct bfd *abfd)
obstack_init (&storage->storage_obstack);
storage->filename_cache = bcache_xmalloc (NULL, NULL);
+ storage->macro_cache = bcache_xmalloc (NULL, NULL);
}
return storage;
@@ -142,6 +143,7 @@ static void
free_objfile_per_bfd_storage (struct objfile_per_bfd_storage *storage)
{
bcache_xfree (storage->filename_cache);
+ bcache_xfree (storage->macro_cache);
obstack_free (&storage->storage_obstack, 0);
}
@@ -238,7 +240,6 @@ allocate_objfile (bfd *abfd, int flags)
objfile = (struct objfile *) xzalloc (sizeof (struct objfile));
objfile->psymbol_cache = psymbol_bcache_init ();
- objfile->macro_cache = bcache_xmalloc (NULL, NULL);
/* We could use obstack_specify_allocation here instead, but
gdb_obstack.h specifies the alloc/dealloc functions. */
obstack_init (&objfile->objfile_obstack);
@@ -663,7 +664,6 @@ free_objfile (struct objfile *objfile)
xfree (objfile->static_psymbols.list);
/* Free the obstacks for non-reusable objfiles. */
psymbol_bcache_free (objfile->psymbol_cache);
- bcache_xfree (objfile->macro_cache);
if (objfile->demangled_names_hash)
htab_delete (objfile->demangled_names_hash);
obstack_free (&objfile->objfile_obstack, 0);
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index 7caff48..82dbcba 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -174,6 +174,9 @@ struct objfile_per_bfd_storage
/* Byte cache for file names. */
struct bcache *filename_cache;
+
+ /* Byte cache for macros. */
+ struct bcache *macro_cache;
};
/* Master structure for keeping track of each file from which
@@ -269,7 +272,6 @@ struct objfile
will not change. */
struct psymbol_bcache *psymbol_cache; /* Byte cache for partial syms. */
- struct bcache *macro_cache; /* Byte cache for macros. */
/* Hash table for mapping symbol names to demangled names. Each
entry in the hash table is actually two consecutive strings,
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 1aa3927..cc740e1 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -2548,8 +2548,6 @@ reread_symbols (void)
/* Free the obstacks for non-reusable objfiles. */
psymbol_bcache_free (objfile->psymbol_cache);
objfile->psymbol_cache = psymbol_bcache_init ();
- bcache_xfree (objfile->macro_cache);
- objfile->macro_cache = bcache_xmalloc (NULL, NULL);
if (objfile->demangled_names_hash != NULL)
{
htab_delete (objfile->demangled_names_hash);
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index 3e9ca82..9ce7679 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -92,7 +92,8 @@ print_symbol_bcache_statistics (void)
printf_filtered (_("Byte cache statistics for '%s':\n"), objfile->name);
print_bcache_statistics (psymbol_bcache_get_bcache (objfile->psymbol_cache),
"partial symbol cache");
- print_bcache_statistics (objfile->macro_cache, "preprocessor macro cache");
+ print_bcache_statistics (objfile->per_bfd->macro_cache,
+ "preprocessor macro cache");
print_bcache_statistics (objfile->per_bfd->filename_cache,
"file name cache");
}
@@ -154,7 +155,7 @@ print_objfile_statistics (void)
bcache_memory_used (psymbol_bcache_get_bcache
(objfile->psymbol_cache)));
printf_filtered (_(" Total memory used for macro cache: %d\n"),
- bcache_memory_used (objfile->macro_cache));
+ bcache_memory_used (objfile->per_bfd->macro_cache));
printf_filtered (_(" Total memory used for file name cache: %d\n"),
bcache_memory_used (objfile->per_bfd->filename_cache));
}
--
1.7.7.6