* dwarf2read.c (macro_start_file): Update.
authorTom Tromey <tromey@redhat.com>
Wed, 22 Aug 2012 16:12:50 +0000 (16:12 +0000)
committerTom Tromey <tromey@redhat.com>
Wed, 22 Aug 2012 16:12:50 +0000 (16:12 +0000)
* 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/ChangeLog
gdb/dwarf2read.c
gdb/objfiles.c
gdb/objfiles.h
gdb/symfile.c
gdb/symmisc.c

index 3b2bc5b0c9b6f01a8a4faf93cb4dce389009cf98..571c9b6e3644d72478cd94c00a5b0cceec8b0edc 100644 (file)
@@ -1,3 +1,16 @@
+2012-08-22  Tom Tromey  <tromey@redhat.com>
+
+       * 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.
+
 2012-08-22  Tom Tromey  <tromey@redhat.com>
 
        * elfread.c (elf_symtab_read): Update.
index 099b67a00f4ef2e98fa46125c1d0fbbd2d220462..682fd0fbf4dd2399e25a5edc35b7681f62523c86 100644 (file)
@@ -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)
     {
index 250cf3514caa3865af88a3333edb5ebec4775739..d5317a87f3fe97c3a2797e63dd88333f375aa538 100644 (file)
@@ -141,6 +141,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;
@@ -152,6 +153,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);
 }
 
@@ -251,7 +253,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);
@@ -676,7 +677,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);
index 2b95ce47fc15cdb5158b82a1e0ee9ccb34e69ca8..24124fee0fc1fb76107cce3037325b3d6616d184 100644 (file)
@@ -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,
index 6ef1ac111ea4579e599d72cf7e123fb7bbb31fa3..6c93ba6dcdb27af235fd6d2454c54f4bd1e21345 100644 (file)
@@ -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);
index 3e9ca82d7e33a634cd57fd18162e3466ce8ae002..9ce7679f978d3b5fc14a651c0f68be113521fd8f 100644 (file)
@@ -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));
   }