This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [wip] Delete prev_func_name and ecs->stop_func_name


On Wed, Apr 16, 2003 at 12:29:25AM -0400, Andrew Cagney wrote:

Running the i386 testsuite with gcov on an existing GDB reveals:

                int
                find_pc_sect_partial_function
       10133    {
       10133      struct partial_symtab *pst;
                  struct symbol *f;
                  struct minimal_symbol *msymbol;
                  struct partial_symbol *psb;
                  struct obj_section *osect;
                  int i;
                  CORE_ADDR mapped_pc;

10133 mapped_pc = overlay_mapped_address (pc, section);

       10133      if (mapped_pc >= cache_pc_function_low
                      && mapped_pc < cache_pc_function_high
                      && section == cache_pc_function_section)
        3565        goto return_cached_value;

3565 if (SIGTRAMP_START_P () && ...

that is, 10133 calls to find_pc_sect_partial_function, 3565 of which missed in the cache. Modifying infrun.c so that it doesn't cache the name turns up:

                int
                find_pc_sect_partial_function
       12087    {
       12087      struct partial_symtab *pst;
                  struct symbol *f;
                  struct minimal_symbol *msymbol;
                  struct partial_symbol *psb;
                  struct obj_section *osect;
                  int i;
                  CORE_ADDR mapped_pc;

12087 mapped_pc = overlay_mapped_address (pc, section);

       12087      if (mapped_pc >= cache_pc_function_low
                      && mapped_pc < cache_pc_function_high
                      && section == cache_pc_function_section)
        3569        goto return_cached_value;


What're the following lines for both of these?  There's some
optimization at work here, or these numbers show the exact opposite of
what you want.  That's 3569 _hits_ to the cache.

No.


 But matching the
execution count for the line after the goto is suspicious.

It's gcov playing tricks, the goto is being counted in the false path. The first analysis illustrates this:


3565 goto return_cached_value;

3565 if (SIGTRAMP_START_P () && ...

and the second is identical.


Andrew



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]