]> granicus.if.org Git - gc/commitdiff
2007-06-29 Hans Boehm <Hans.Boehm@hp.com>
authorhboehm <hboehm>
Sat, 30 Jun 2007 05:49:31 +0000 (05:49 +0000)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 26 Jul 2011 17:06:41 +0000 (21:06 +0400)
* backgraph.c (per_object_func): Make argument types consistent.
(GC_traverse_back_graph): Mark GC_deepest_obj.

ChangeLog
backgraph.c

index a18cdee60f30d91871854a89cfbd7404c542fbc7..a68569ab618e94e495c0976d420b0194ada9602e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+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.
index 4c5623fbd727571ae03970a190c18084f14984e1..59c330f4679994e5f91fde3c07e9695961aad7a7 100644 (file)
@@ -254,7 +254,7 @@ static void add_edge(ptr_t p,  ptr_t q)
     }
 }
 
-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)
 {
@@ -275,7 +275,7 @@ void GC_apply_to_each_object(per_object_func f)
   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)) {
@@ -392,7 +392,7 @@ ptr_t GC_deepest_obj;
 /* 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;
@@ -444,6 +444,8 @@ void GC_traverse_back_graph(void)
 {
   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)