+2006-11-19 Soren Sandmann <sandmann@redhat.com>
+
+ * profile.c (profile_load): Use stack_node_new() o
+ (profile_load): Use set_root() instead of new_from_root();
+
+ * stackstash.c (stack_stash_new_from_root): Delete this function
+ (stack_stash_set_root): Add this function
+ (stack_node_new): Export this function
+
2006-11-19 Soren Sandmann <sandmann@redhat.com>
* binparser.h: Declare bin_parser_free();
sfile_end_get (input, "object", string);
}
sfile_end_get (input, "objects", NULL);
+
+ profile->stash = stack_stash_new ((GDestroyNotify)g_free);
n = sfile_begin_get_list (input, "nodes");
for (i = 0; i < n; ++i)
{
- StackNode *node = g_new (StackNode, 1);
+ StackNode *node = stack_node_new ();
sfile_begin_get_record (input, "node");
sformat_free (format);
sfile_input_free (input);
- profile->stash = stack_stash_new_from_root (root, (GDestroyNotify)g_free);
+ stack_stash_set_root (profile->stash, root);
return profile;
}
GDestroyNotify destroy;
};
-static StackNode *
+StackNode *
stack_node_new (void)
{
StackNode *node = g_new (StackNode, 1);
stash->nodes_by_data, node->address, node);
}
-StackStash *
-stack_stash_new_from_root (StackNode *root,
- GDestroyNotify destroy)
+void
+stack_stash_set_root (StackStash *stash,
+ StackNode *root)
{
- StackStash *stash = create_stack_stash (destroy);
-
- stash->root = root;
+ g_return_if_fail (stash->root == NULL);
+ g_return_if_fail (g_hash_table_size (stash->nodes_by_data) == 0);
+ stash->root = root;
build_hash_table (stash->root, stash);
-
- return stash;
}
/* Stach */
StackStash *stack_stash_new (GDestroyNotify destroy);
-StackStash *stack_stash_new_from_root (StackNode *root,
- GDestroyNotify destroy);
+StackNode * stack_node_new (void);
void stack_stash_add_trace (StackStash *stash,
gulong *addrs,
gint n_addrs,
StackNode *stack_stash_get_root (StackStash *stash);
StackStash *stack_stash_ref (StackStash *stash);
void stack_stash_unref (StackStash *stash);
-
+void stack_stash_set_root (StackStash *stash,
+ StackNode *root);
#endif