mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-10 15:10:53 +00:00
Use hash table instead of list.
2007-11-20 Soren Sandmann <sandmann@daimi.au.dk> * binfile.c (find_separate_debug_file): Use hash table instead of list. svn path=/trunk/; revision=395
This commit is contained in:
committed by
Søren Sandmann Pedersen
parent
d3b5cc446f
commit
64d220e346
@ -1,3 +1,8 @@
|
|||||||
|
2007-11-20 Soren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* binfile.c (find_separate_debug_file): Use hash table instead of
|
||||||
|
list.
|
||||||
|
|
||||||
2007-11-18 Soren Sandmann <sandmann@daimi.au.dk>
|
2007-11-18 Soren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
* module/sysprof-module.c (heuristic_trace): Make heuristic stack
|
* module/sysprof-module.c (heuristic_trace): Make heuristic stack
|
||||||
|
|||||||
25
binfile.c
25
binfile.c
@ -183,21 +183,6 @@ get_debug_file (ElfParser *elf,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
list_contains_name (GList *names, const char *name)
|
|
||||||
{
|
|
||||||
GList *list;
|
|
||||||
for (list = names; list != NULL; list = list->next)
|
|
||||||
{
|
|
||||||
const char *n = list->data;
|
|
||||||
|
|
||||||
if (strcmp (n, name) == 0)
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static ElfParser *
|
static ElfParser *
|
||||||
find_separate_debug_file (ElfParser *elf,
|
find_separate_debug_file (ElfParser *elf,
|
||||||
const char *filename)
|
const char *filename)
|
||||||
@ -205,13 +190,14 @@ find_separate_debug_file (ElfParser *elf,
|
|||||||
ElfParser *debug;
|
ElfParser *debug;
|
||||||
char *debug_name = NULL;
|
char *debug_name = NULL;
|
||||||
char *fname;
|
char *fname;
|
||||||
GList *seen_names = NULL;
|
GHashTable *seen_names =
|
||||||
|
g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
|
||||||
|
|
||||||
fname = g_strdup (filename);
|
fname = g_strdup (filename);
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (list_contains_name (seen_names, fname))
|
if (g_hash_table_lookup (seen_names, fname))
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
g_print (" cycle detected\n");
|
g_print (" cycle detected\n");
|
||||||
@ -227,7 +213,7 @@ find_separate_debug_file (ElfParser *elf,
|
|||||||
elf_parser_free (elf);
|
elf_parser_free (elf);
|
||||||
elf = debug;
|
elf = debug;
|
||||||
|
|
||||||
seen_names = g_list_prepend (seen_names, fname);
|
g_hash_table_insert (seen_names, fname, fname);
|
||||||
fname = debug_name;
|
fname = debug_name;
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
@ -240,8 +226,7 @@ find_separate_debug_file (ElfParser *elf,
|
|||||||
while (debug);
|
while (debug);
|
||||||
|
|
||||||
g_free (fname);
|
g_free (fname);
|
||||||
g_list_foreach (seen_names, (GFunc)g_free, NULL);
|
g_hash_table_destroy (seen_names);
|
||||||
g_list_free (seen_names);
|
|
||||||
|
|
||||||
return elf;
|
return elf;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user