* ggc-page.c (GGC_MIN_LAST_ALLOCATED): New.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Sep 1999 06:05:53 +0000 (06:05 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Sep 1999 06:05:53 +0000 (06:05 +0000)
        (init_ggc): Use it instead of a constant.
        (ggc_collect): Bound allocated_last_gc by it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29685 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ggc-page.c

index 7c1d114..23c794a 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 b5a2899..54528a5 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;