Re: RFA: Don't use obsavestring in dwarf2read

Daniel Jacobowitz
2004-02-05T20:47:58Z

On Thu, Feb 05, 2004 at 03:34:30PM -0500, Elena Zannoni wrote:
> > The obstacks themselves are probably a good idea. Once upon a time,
> > Peter informed me, there was a plan to free the psymbol obstack when
> > all symbols had been read in; but that doesn't seem like a useful
> > optimization, and I can't think offhand of any use for separate symbol
> > and type obstacks. I wouldn't object to having a per-objfile obstack
> > instead, and un-seperating them.
>
> I think it would be worthwhile to see how much doing that would save us.

Well, it wouldn't save anything by itself - there's immeasurable
overhead to the obstacks. It would let us eliminate this sort of
duplication, but they're pretty tricky to identify; it took me a couple
of hours to convince myself about this set of 'em.

> > > [BTW why are only few obstack properly initialized?]
> >
> > Which do you mean?
> >
>
> I grepped for obstack_init, and only a few obstacks call that
> function. Form the obstack doco, it seems that it needs to be
> called. I wonder if the function was introduced later on in libiberty,
> as an afterthought.

It looks like obstack_specify_allocation and obstack_init fill the same
role. The objfile's obstacks use the former.

> Ah, ok, it's because of the nature of the program you were handling. I
> was trying to imagine how the overhead of obstack themselves could be
> that large. It seems to me that this is a good argument for an 'on
> demand' symbol reading implementaion. But, yes the various dwarf2
> sections are already in the psymbol_obstack. And we are duplicating
> that again on the type_obstack. :-(

Right. I'm not sure how much of this can be done on demand that isn't
already; if I wasn't clear about this, the 100MB was a worst-case
number (-readnow). Without -readnow it's much less.

> > Another large portion comes from not duplicating the names of types in
> > the typedef symbols associated with the type. One was on type_obstack,
> > the other on symbol_obstack.
> >
>
> Right; this would also go away if we unify the obstacks.