changeset 64611:47f158dcf216

(gc_cons_threshold): Not static. (gc_cons_combined_threshold): Var deleted. (gc_relative_threshold): New variable. (Fgarbage_collect, init_alloc_once): Compute gc_relative_threshold instead of gc_cons_combined_threshold.
author Richard M. Stallman <rms@gnu.org>
date Sat, 23 Jul 2005 19:08:06 +0000
parents 06bf5258607d
children 6926a2764ae6
files src/alloc.c
diffstat 1 files changed, 14 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/alloc.c	Sat Jul 23 10:22:44 2005 +0000
+++ b/src/alloc.c	Sat Jul 23 19:08:06 2005 +0000
@@ -172,10 +172,14 @@
 EMACS_INT intervals_consed;
 EMACS_INT strings_consed;
 
-/* Number of bytes of consing since GC before another GC should be done. */
-
-static EMACS_INT gc_cons_threshold;
-EMACS_INT gc_cons_combined_threshold;
+/* Minimum number of bytes of consing since GC before next GC. */
+
+EMACS_INT gc_cons_threshold;
+
+/* Similar minimum, computed from Vgc_cons_percentage.  */
+
+EMACS_INT gc_relative_threshold;
+
 static Lisp_Object Vgc_cons_percentage;
 
 /* Nonzero during GC.  */
@@ -4899,12 +4903,10 @@
   if (gc_cons_threshold < 10000)
     gc_cons_threshold = 10000;
 
-  gc_cons_combined_threshold = gc_cons_threshold;
-
   if (FLOATP (Vgc_cons_percentage))
     { /* Set gc_cons_combined_threshold.  */
       EMACS_INT total = 0;
-      EMACS_INT threshold;
+
       total += total_conses  * sizeof (struct Lisp_Cons);
       total += total_symbols * sizeof (struct Lisp_Symbol);
       total += total_markers * sizeof (union Lisp_Misc);
@@ -4914,10 +4916,10 @@
       total += total_intervals * sizeof (struct interval);
       total += total_strings * sizeof (struct Lisp_String);
       
-      threshold = total * XFLOAT_DATA (Vgc_cons_percentage);
-      if (threshold > gc_cons_combined_threshold)
-	gc_cons_combined_threshold = threshold;
+      gc_relative_threshold = total * XFLOAT_DATA (Vgc_cons_percentage);
     }
+  else
+    gc_relative_threshold = 0;
 
   if (garbage_collection_messages)
     {
@@ -6008,7 +6010,8 @@
   staticidx = 0;
   consing_since_gc = 0;
   gc_cons_threshold = 100000 * sizeof (Lisp_Object);
-  gc_cons_combined_threshold = gc_cons_threshold;
+  gc_relative_threshold = 0;
+
 #ifdef VIRT_ADDR_VARIES
   malloc_sbrk_unused = 1<<22;	/* A large number */
   malloc_sbrk_used = 100000;	/* as reasonable as any number */