+2007-06-29 Hans Boehm <Hans.Boehm@hp.com>
+
+ * backgraph.c (per_object_func): Make argument types consistent.
+ (GC_traverse_back_graph): Mark GC_deepest_obj.
+
2007-06-29 Hans Boehm <Hans.Boehm@hp.com>
* finalize.c (GC_finalize): Change dl_size and fo_size to size_t.
}
}
-typedef void (*per_object_func)(ptr_t p, word n_bytes, word gc_descr);
+typedef void (*per_object_func)(ptr_t p, size_t n_bytes, word gc_descr);
static void per_object_helper(struct hblk *h, word fn)
{
GC_apply_to_all_blocks(per_object_helper, (word)f);
}
-static void reset_back_edge(ptr_t p, word n_bytes, word gc_descr)
+static void reset_back_edge(ptr_t p, size_t n_bytes, word gc_descr)
{
/* Skip any free list links, or dropped blocks */
if (GC_HAS_DEBUG_INFO(p)) {
/* next GC. */
/* Set GC_max_height to be the maximum height we encounter, and */
/* GC_deepest_obj to be the corresponding object. */
-static void update_max_height(ptr_t p, word n_bytes, word gc_descr)
+static void update_max_height(ptr_t p, size_t n_bytes, word gc_descr)
{
if (GC_is_marked(p) && GC_HAS_DEBUG_INFO(p)) {
int i;
{
GC_max_height = 0;
GC_apply_to_each_object(update_max_height);
+ if (0 != GC_deepest_obj)
+ GC_set_mark_bit(GC_deepest_obj); /* Keep it until we can print it. */
}
void GC_print_back_graph_stats(void)