Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: Jim Blandy <jimb@redhat.com>
Cc: gdb-patches@sources.redhat.com, ezannoni@redhat.com
Subject: Re: [rfa/dwarf/doc] Inter-compilation-unit reference support for partial DIEs
Date: Thu, 05 Aug 2004 18:05:00 -0000	[thread overview]
Message-ID: <20040805180341.GB9011@nevyn.them.org> (raw)
In-Reply-To: <vt2pt654i36.fsf@zenia.home>

On Thu, Aug 05, 2004 at 12:20:45PM -0500, Jim Blandy wrote:
> 
> Okay.  I've started to review this.
> 
> One thought on what I understand so far:
> 
> The way read-in compilation units are chained through alternating
> 'struct dwarf2_cu' objects and 'struct dwarf2_per_cu_data' nodes is
> kind of weird.  And the name 'struct dwarf2_per_cu_data' is not
> great --- 'struct dwarf2_cu' is also per-CU data.

My intention was that dwarf2_per_cu_data is the reference object for
all data relating to this CU and for locating this CU, and the
dwarf2_cu is for data actually residing in the CU or needed to process
the CU.

> Would it work to simply place the 'struct dwarf2_cu' objects
> themselves directly into the tree, add a 'read_in' flag, and get rid
> of dwarf2_per_cu_data altogether?  The memory consumption doesn't
> seem like it matters: GDB has 300 CU's, so a 300-byte structure per
> CU would add up to ~90k.  You've been watching memory consumption,
> so you can say better than I how this looks.
> 
> Putting the dwarf2_cu objects directly in the tree would also remove
> the need for a read_in_chain: you could just walk the whole tree.
> The splay tree accessor functions would replace the linked list
> wrangling.

I don't think eliminating read_in_chain would be a good idea.  Yes, the
list wrangling is a bit hairy, but this way we can deal with the cached
compilation units instead of walking the entire splay tree.  We age
compilation units after each CU is processed; walking the tree would be
quadratic in the number of compilation units, while the number cached
is generally bounded.  Also walking the splay tree is very expensive,
because that involves splaying the tree - there are no parent pointers
in the splay nodes.  Our splay trees are not a marvel.


As for merging dwarf2_per_cu_data and dwarf2_cu... Monotone, with
duplicate elimination turned on, has a bit over a thousand compilation
units.  There should probably be more, but not a lot more.  Without
elimination it has only 136.  I'm not sure how many glibc would have;
without it has 1124, so with possibly as many as eight thousand.  So an
extra 2MB.

[On my branch dwarf2_cu is a lot bigger, but that change won't make it
to mainline.  I put the die_ref_table in the cu instead of on the
comp_unit_obstack because I didn't have a comp_unit_obstack at the
time, IIRC.]

2MB isn't a lot and I can probably cut it down further - for instance
almost a third of that space is ftypes, and there could trivially be
one of these per language per objfile instead.

So I can merge the two structures if you would like.  I can't think of
any fundamental problem.

-- 
Daniel Jacobowitz


  reply	other threads:[~2004-08-05 18:05 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-20 17:09 Daniel Jacobowitz
2004-04-20 19:43 ` Eli Zaretskii
2004-04-22 22:15 ` Jim Blandy
2004-06-17  3:42 ` Daniel Jacobowitz
2004-06-17  4:19   ` Eli Zaretskii
2004-06-17  4:21     ` Daniel Jacobowitz
2004-06-17  4:26       ` Eli Zaretskii
2004-07-15 18:45   ` Daniel Jacobowitz
2004-07-16 11:18     ` Eli Zaretskii
2004-08-04 23:07     ` Daniel Jacobowitz
2004-08-05 17:23       ` Jim Blandy
2004-08-05 18:05         ` Daniel Jacobowitz [this message]
2004-08-06 22:25           ` Jim Blandy
2004-08-07 22:01             ` Daniel Jacobowitz
2004-08-08  4:42               ` Jim Blandy
2004-08-08 18:17                 ` Daniel Jacobowitz
2004-08-08 19:30                   ` Daniel Jacobowitz
2004-08-10  0:24                     ` Jim Blandy
2004-08-06 22:28           ` Jim Blandy
2004-08-06 22:58           ` Jim Blandy
2004-08-07  0:05           ` Jim Blandy
2004-09-16 21:15 ` Daniel Jacobowitz
2004-09-20 16:41   ` Daniel Jacobowitz
2004-09-20 20:28   ` Jim Blandy
2004-09-20 23:59     ` Daniel Jacobowitz
2004-04-22 22:58 Michael Elizabeth Chastain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20040805180341.GB9011@nevyn.them.org \
    --to=drow@false.org \
    --cc=ezannoni@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=jimb@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox