Re: [PATCH] Have partial symbol tables own psymbol vectors

Simon Marchi
2020-08-31T21:39:40Z

On 2020-08-31 1:09 p.m., Tom Tromey wrote:
> Tom> It occurred to me today that add_psymbol_to_list could now be a method
> Tom> on partial_symtab. I'm going to make that change and then resubmit.
>
> Here's the updated patch.
>
> Tom
>
> commit ac9fbb7aa1adcbc81cf8f6b9114e84c9193ae512
> Author: Tom Tromey <tom@tromey.com>
> Date: Tue Aug 25 11:12:26 2020 -0600
>
> Have partial symbol tables own psymbol vectors
>
> Currently pointers to all partial symbols are stored in two vectors;
> and then indices into these vectors are stored in each partial_symtab.
>
> This patch changes this so that each partial symtab instead has
> vectors of symbols. add_psymbol_to_list can now be changed into a
> method on partial_symtab as well.
>
> My main motivation for doing this is that I am looking into calling
> sort_pst_symbols in the background. However, I haven't actually
> implemented this yet. (Also this may make it more feasible to also
> sort the static psymbols, though I haven't tried that either.)
>
> Also, though, this lets us remove the "current_global_psymbols"
> vector, because now the callers can simply refer directly to the
> psymtab that they are modifying (formerly this was implicit).
>
> The main drawback of this patch is that it increases the size of
> partial symtab.

Hi Tom,

I don't have a lot of time to look at this right now, but I'm trying to remember how this
all works (notably how things are shared between objfiles).

I think it would be a good time to get rid of the objfile parameter in the add_psymbol
methods. This parameter shouldn't be there if the partial symtabs are really
objfile-independent.

Note that partial_symtab::add_psymbol passes the objfile to add_psymbol_to_bcache, which
only uses it to get the psymtab_storage. is there a way it could get it some other way?

The other use of objfile in partial_symtab::add_psymbol is for stats. I think that could
be easily implemented some other way that doesn't require passing the objfile.

I'll try to take another look later to better understand the patch.

Simon