Mercurial > emacs
comparison src/alloc.c @ 90201:fbb2bea03df9
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-69
Merge from emacs--cvs-trunk--0
Patches applied:
* emacs--cvs-trunk--0 (patch 474-484)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 88-91)
- Merge from emacs--cvs-trunk--0
- Update FSF's address in GPL notices
- Update from CVS
author | Miles Bader <miles@gnu.org> |
---|---|
date | Thu, 14 Jul 2005 08:02:00 +0000 |
parents | f9a65d7ebd29 ce14666827c6 |
children | 890cc78a5a24 |
comparison
equal
deleted
inserted
replaced
90200:f9a65d7ebd29 | 90201:fbb2bea03df9 |
---|---|
172 EMACS_INT intervals_consed; | 172 EMACS_INT intervals_consed; |
173 EMACS_INT strings_consed; | 173 EMACS_INT strings_consed; |
174 | 174 |
175 /* Number of bytes of consing since GC before another GC should be done. */ | 175 /* Number of bytes of consing since GC before another GC should be done. */ |
176 | 176 |
177 EMACS_INT gc_cons_threshold; | 177 static EMACS_INT gc_cons_threshold; |
178 EMACS_INT gc_cons_combined_threshold; | |
179 static Lisp_Object Vgc_cons_percentage; | |
178 | 180 |
179 /* Nonzero during GC. */ | 181 /* Nonzero during GC. */ |
180 | 182 |
181 int gc_in_progress; | 183 int gc_in_progress; |
182 | 184 |
4851 gc_in_progress = 0; | 4853 gc_in_progress = 0; |
4852 | 4854 |
4853 consing_since_gc = 0; | 4855 consing_since_gc = 0; |
4854 if (gc_cons_threshold < 10000) | 4856 if (gc_cons_threshold < 10000) |
4855 gc_cons_threshold = 10000; | 4857 gc_cons_threshold = 10000; |
4858 | |
4859 gc_cons_combined_threshold = gc_cons_threshold; | |
4860 | |
4861 if (FLOATP (Vgc_cons_percentage)) | |
4862 { /* Set gc_cons_combined_threshold. */ | |
4863 EMACS_INT total = 0; | |
4864 EMACS_INT threshold; | |
4865 total += total_conses * sizeof (struct Lisp_Cons); | |
4866 total += total_symbols * sizeof (struct Lisp_Symbol); | |
4867 total += total_markers * sizeof (union Lisp_Misc); | |
4868 total += total_string_size; | |
4869 total += total_vector_size * sizeof (Lisp_Object); | |
4870 total += total_floats * sizeof (struct Lisp_Float); | |
4871 total += total_intervals * sizeof (struct interval); | |
4872 total += total_strings * sizeof (struct Lisp_String); | |
4873 | |
4874 threshold = total * XFLOAT_DATA (Vgc_cons_percentage); | |
4875 if (threshold > gc_cons_combined_threshold) | |
4876 gc_cons_combined_threshold = threshold; | |
4877 } | |
4856 | 4878 |
4857 if (garbage_collection_messages) | 4879 if (garbage_collection_messages) |
4858 { | 4880 { |
4859 if (message_p || minibuf_level > 0) | 4881 if (message_p || minibuf_level > 0) |
4860 restore_message (); | 4882 restore_message (); |
5941 gcprolist = 0; | 5963 gcprolist = 0; |
5942 byte_stack_list = 0; | 5964 byte_stack_list = 0; |
5943 staticidx = 0; | 5965 staticidx = 0; |
5944 consing_since_gc = 0; | 5966 consing_since_gc = 0; |
5945 gc_cons_threshold = 100000 * sizeof (Lisp_Object); | 5967 gc_cons_threshold = 100000 * sizeof (Lisp_Object); |
5968 gc_cons_combined_threshold = gc_cons_threshold; | |
5946 #ifdef VIRT_ADDR_VARIES | 5969 #ifdef VIRT_ADDR_VARIES |
5947 malloc_sbrk_unused = 1<<22; /* A large number */ | 5970 malloc_sbrk_unused = 1<<22; /* A large number */ |
5948 malloc_sbrk_used = 100000; /* as reasonable as any number */ | 5971 malloc_sbrk_used = 100000; /* as reasonable as any number */ |
5949 #endif /* VIRT_ADDR_VARIES */ | 5972 #endif /* VIRT_ADDR_VARIES */ |
5950 } | 5973 } |
5972 allocated since the last garbage collection. All data types count. | 5995 allocated since the last garbage collection. All data types count. |
5973 | 5996 |
5974 Garbage collection happens automatically only when `eval' is called. | 5997 Garbage collection happens automatically only when `eval' is called. |
5975 | 5998 |
5976 By binding this temporarily to a large number, you can effectively | 5999 By binding this temporarily to a large number, you can effectively |
5977 prevent garbage collection during a part of the program. */); | 6000 prevent garbage collection during a part of the program. |
6001 See also `gc-cons-percentage'. */); | |
6002 | |
6003 DEFVAR_LISP ("gc-cons-percentage", &Vgc_cons_percentage, | |
6004 doc: /* *Portion of the heap used for allocation. | |
6005 Garbage collection can happen automatically once this portion of the heap | |
6006 has been allocated since the last garbage collection. | |
6007 If this portion is smaller than `gc-cons-threshold', this is ignored. */); | |
6008 Vgc_cons_percentage = make_float (0.1); | |
5978 | 6009 |
5979 DEFVAR_INT ("pure-bytes-used", &pure_bytes_used, | 6010 DEFVAR_INT ("pure-bytes-used", &pure_bytes_used, |
5980 doc: /* Number of bytes of sharable Lisp data allocated so far. */); | 6011 doc: /* Number of bytes of sharable Lisp data allocated so far. */); |
5981 | 6012 |
5982 DEFVAR_INT ("cons-cells-consed", &cons_cells_consed, | 6013 DEFVAR_INT ("cons-cells-consed", &cons_cells_consed, |