Remove partial symbol statistics
authorTom Tromey <tom@tromey.com>
Sun, 1 Nov 2020 16:51:13 +0000 (09:51 -0700)
committerTom Tromey <tom@tromey.com>
Sun, 1 Nov 2020 16:51:14 +0000 (09:51 -0700)
The "n_psyms" statistic in the per-objfile stats is not really needed,
but its use requires passing the objfile to add_psymbol.  This patch
removes the field in favor of counting the psyms when needed.

Note that this is not exactly equivalent -- in the old approach, a
psymbol can in theory be created and then the psymtab discarded, which
would increment the counter.  This does not seem very important to me.

I rewrote the code to count partial symbols; though TBH I think that
this information is not really very useful.

gdb/ChangeLog
2020-11-01  Tom Tromey  <tom@tromey.com>

* symmisc.c (count_psyms): New function.
(print_objfile_statistics): Use it.
* psymtab.c (append_psymbol_to_list): Remove.
(partial_symtab::add_psymbol): Inline append_psymbol_to_list.
* objfiles.h (struct objstats) <n_psyms>: Remove.

gdb/ChangeLog
gdb/objfiles.h
gdb/psymtab.c
gdb/symmisc.c

index 967317a0eba20c3888f9def53b8810fa82749280..f34932d16b84578b494430b7bc9a41cfd5558597 100644 (file)
@@ -1,3 +1,11 @@
+2020-11-01  Tom Tromey  <tom@tromey.com>
+
+       * symmisc.c (count_psyms): New function.
+       (print_objfile_statistics): Use it.
+       * psymtab.c (append_psymbol_to_list): Remove.
+       (partial_symtab::add_psymbol): Inline append_psymbol_to_list.
+       * objfiles.h (struct objstats) <n_psyms>: Remove.
+
 2020-11-01  Tom Tromey  <tom@tromey.com>
 
        * dbxread.c (dbx_end_psymtab): Update.
index 549977ad2570f0bdb4260364f8fa8337347c0970..bf3d7fcf25399f8ba2ef10d160834d850df9246a 100644 (file)
@@ -194,9 +194,6 @@ struct obj_section
 
 struct objstats
 {
-  /* Number of partial symbols read.  */
-  int n_psyms = 0;
-
   /* Number of full symbols read.  */
   int n_syms = 0;
 
index b3deef4107d8a1b448521eb65fff79a2011a93d2..dc802a60f3cc2b02687d50efca3122e1e42e8856 100644 (file)
@@ -1523,17 +1523,6 @@ add_psymbol_to_bcache (const partial_symbol &psymbol, struct objfile *objfile,
          (&psymbol, sizeof (struct partial_symbol), added));
 }
 
-/* Helper function, adds partial symbol to the given partial symbol list.  */
-
-static void
-append_psymbol_to_list (std::vector<partial_symbol *> &list,
-                       struct partial_symbol *psym,
-                       struct objfile *objfile)
-{
-  list.push_back (psym);
-  OBJSTAT (objfile, n_psyms++);
-}
-
 /* See psympriv.h.  */
 
 void
@@ -1555,7 +1544,7 @@ partial_symtab::add_psymbol (const partial_symbol &psymbol,
     = (where == psymbol_placement::STATIC
        ? static_psymbols
        : global_psymbols);
-  append_psymbol_to_list (list, psym, objfile);
+  list.push_back (psym);
 }
 
 /* See psympriv.h.  */
index fc56cfa9381c3ac36cccbd919563ff9a8c4e5d05..8d748b9ebf7b77476666ae41cebca59eee6bce12 100644 (file)
@@ -39,6 +39,7 @@
 #include "readline/tilde.h"
 
 #include "psymtab.h"
+#include "psympriv.h"
 
 /* Unfortunately for debugging, stderr is usually a macro.  This is painful
    when calling functions that take FILE *'s from the debugger.
@@ -73,6 +74,20 @@ print_symbol_bcache_statistics (void)
       }
 }
 
+/* Count the number of partial symbols in OBJFILE.  */
+
+static int
+count_psyms (struct objfile *objfile)
+{
+  int count = 0;
+  for (partial_symtab *pst : objfile->psymtabs ())
+    {
+      count += pst->global_psymbols.size ();
+      count += pst->static_psymbols.size ();
+    }
+  return count;
+}
+
 void
 print_objfile_statistics (void)
 {
@@ -89,9 +104,11 @@ print_objfile_statistics (void)
        if (objfile->per_bfd->n_minsyms > 0)
          printf_filtered (_("  Number of \"minimal\" symbols read: %d\n"),
                           objfile->per_bfd->n_minsyms);
-       if (OBJSTAT (objfile, n_psyms) > 0)
+
+       int n_psyms = count_psyms (objfile);
+       if (n_psyms > 0)
          printf_filtered (_("  Number of \"partial\" symbols read: %d\n"),
-                          OBJSTAT (objfile, n_psyms));
+                          n_psyms);
        if (OBJSTAT (objfile, n_syms) > 0)
          printf_filtered (_("  Number of \"full\" symbols read: %d\n"),
                           OBJSTAT (objfile, n_syms));