ggc-page.c (GGC_MIN_LAST_ALLOCATED): New.
authorRichard Henderson <rth@cygnus.com>
Tue, 28 Sep 1999 06:05:53 +0000 (23:05 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 28 Sep 1999 06:05:53 +0000 (23:05 -0700)
        * ggc-page.c (GGC_MIN_LAST_ALLOCATED): New.
        (init_ggc): Use it instead of a constant.
        (ggc_collect): Bound allocated_last_gc by it.

From-SVN: r29685

gcc/ChangeLog
gcc/ggc-page.c

index 7c1d1140c11fc7c147eb9840f411e027156f32aa..23c794a7428c402ebf9484d5a7a1aad744045716 100644 (file)
@@ -1,3 +1,9 @@
+Mon Sep 27 23:03:16 1999  Richard Henderson  <rth@cygnus.com>
+
+       * ggc-page.c (GGC_MIN_LAST_ALLOCATED): New.
+       (init_ggc): Use it instead of a constant.
+       (ggc_collect): Bound allocated_last_gc by it.
+
 Mon Sep 27 19:06:04 1999  Jeffrey A Law  (law@cygnus.com)
 
        * fixinc/fixinc.irix (stdio.h): Hack stdio.h to avoid problems
index b5a28990e423231112c1449ead2c7fc6c9d8f2c6..54528a5f3a039bec22cf506060e44501459e85ef 100644 (file)
@@ -255,6 +255,10 @@ static struct globals
    one) before collection is performed.  */
 #define GGC_MIN_EXPAND_FOR_GC (1.3)
 
+/* Bound `allocated_last_gc' to 4MB, to prevent the memory expansion
+   test from triggering too often when the heap is small.  */
+#define GGC_MIN_LAST_ALLOCATED (4 * 1024 * 1024)
+
 \f
 static page_entry *lookup_page_table_entry PROTO ((void *));
 static void set_page_table_entry PROTO ((void *, page_entry *));
@@ -724,9 +728,7 @@ init_ggc ()
   G.debug_file = stdout;
 #endif
 
-  /* Set the initial allocation to 4MB, so no collection will be
-     performed until the heap is somewhat larger than 4 MB.  */
-  G.allocated_last_gc = 4 * 1024 * 1024;
+  G.allocated_last_gc = GGC_MIN_LAST_ALLOCATED;
 
   empty_string = ggc_alloc_string ("", 0);
   ggc_add_string_root (&empty_string, 1);
@@ -1034,6 +1036,8 @@ ggc_collect ()
 #endif
 
   G.allocated_last_gc = G.allocated;
+  if (G.allocated_last_gc < GGC_MIN_LAST_ALLOCATED)
+    G.allocated_last_gc = GGC_MIN_LAST_ALLOCATED;
 
   time = get_run_time () - time;
   gc_time += time;