comparison src/alloc.c @ 39988:eac4e9ae201c

Change doc-string comments to `new style' [w/`doc:' keyword].
author Miles Bader <miles@gnu.org>
date Wed, 17 Oct 2001 03:16:12 +0000
parents 579177964efa
children d3cc7dd5d75a
comparison
equal deleted inserted replaced
39987:9c096889e4c6 39988:eac4e9ae201c
36 /* This file is part of the core Lisp implementation, and thus must 36 /* This file is part of the core Lisp implementation, and thus must
37 deal with the real data structures. If the Lisp implementation is 37 deal with the real data structures. If the Lisp implementation is
38 replaced, this file likely will not be used. */ 38 replaced, this file likely will not be used. */
39 39
40 #undef HIDE_LISP_IMPLEMENTATION 40 #undef HIDE_LISP_IMPLEMENTATION
41 #define DOC_STRINGS_IN_COMMENTS
42 #include "lisp.h" 41 #include "lisp.h"
43 #include "process.h" 42 #include "process.h"
44 #include "intervals.h" 43 #include "intervals.h"
45 #include "puresize.h" 44 #include "puresize.h"
46 #include "buffer.h" 45 #include "buffer.h"
1658 current_sblock = tb; 1657 current_sblock = tb;
1659 } 1658 }
1660 1659
1661 1660
1662 DEFUN ("make-string", Fmake_string, Smake_string, 2, 2, 0, 1661 DEFUN ("make-string", Fmake_string, Smake_string, 2, 2, 0,
1663 /* Return a newly created string of length LENGTH, with each element being INIT. 1662 doc: /* Return a newly created string of length LENGTH, with each element being INIT.
1664 Both LENGTH and INIT must be numbers. */ 1663 Both LENGTH and INIT must be numbers. */)
1665 (length, init)) 1664 (length, init)
1666 Lisp_Object length, init; 1665 Lisp_Object length, init;
1667 { 1666 {
1668 register Lisp_Object val; 1667 register Lisp_Object val;
1669 register unsigned char *p, *end; 1668 register unsigned char *p, *end;
1670 int c, nbytes; 1669 int c, nbytes;
1702 return val; 1701 return val;
1703 } 1702 }
1704 1703
1705 1704
1706 DEFUN ("make-bool-vector", Fmake_bool_vector, Smake_bool_vector, 2, 2, 0, 1705 DEFUN ("make-bool-vector", Fmake_bool_vector, Smake_bool_vector, 2, 2, 0,
1707 /* Return a new bool-vector of length LENGTH, using INIT for as each element. 1706 doc: /* Return a new bool-vector of length LENGTH, using INIT for as each element.
1708 LENGTH must be a number. INIT matters only in whether it is t or nil. */ 1707 LENGTH must be a number. INIT matters only in whether it is t or nil. */)
1709 (length, init)) 1708 (length, init)
1710 Lisp_Object length, init; 1709 Lisp_Object length, init;
1711 { 1710 {
1712 register Lisp_Object val; 1711 register Lisp_Object val;
1713 struct Lisp_Bool_Vector *p; 1712 struct Lisp_Bool_Vector *p;
1714 int real_init, i; 1713 int real_init, i;
2056 cons_free_list = ptr; 2055 cons_free_list = ptr;
2057 } 2056 }
2058 2057
2059 2058
2060 DEFUN ("cons", Fcons, Scons, 2, 2, 0, 2059 DEFUN ("cons", Fcons, Scons, 2, 2, 0,
2061 /* Create a new cons, give it CAR and CDR as components, and return it. */ 2060 doc: /* Create a new cons, give it CAR and CDR as components, and return it. */)
2062 (car, cdr)) 2061 (car, cdr)
2063 Lisp_Object car, cdr; 2062 Lisp_Object car, cdr;
2064 { 2063 {
2065 register Lisp_Object val; 2064 register Lisp_Object val;
2066 2065
2067 if (cons_free_list) 2066 if (cons_free_list)
2129 Fcons (arg5, Qnil))))); 2128 Fcons (arg5, Qnil)))));
2130 } 2129 }
2131 2130
2132 2131
2133 DEFUN ("list", Flist, Slist, 0, MANY, 0, 2132 DEFUN ("list", Flist, Slist, 0, MANY, 0,
2134 /* Return a newly created list with specified arguments as elements. 2133 doc: /* Return a newly created list with specified arguments as elements.
2135 Any number of arguments, even zero arguments, are allowed. */ 2134 Any number of arguments, even zero arguments, are allowed. */)
2136 (nargs, args)) 2135 (nargs, args)
2137 int nargs; 2136 int nargs;
2138 register Lisp_Object *args; 2137 register Lisp_Object *args;
2139 { 2138 {
2140 register Lisp_Object val; 2139 register Lisp_Object val;
2141 val = Qnil; 2140 val = Qnil;
2148 return val; 2147 return val;
2149 } 2148 }
2150 2149
2151 2150
2152 DEFUN ("make-list", Fmake_list, Smake_list, 2, 2, 0, 2151 DEFUN ("make-list", Fmake_list, Smake_list, 2, 2, 0,
2153 /* Return a newly created list of length LENGTH, with each element being INIT. */ 2152 doc: /* Return a newly created list of length LENGTH, with each element being INIT. */)
2154 (length, init)) 2153 (length, init)
2155 register Lisp_Object length, init; 2154 register Lisp_Object length, init;
2156 { 2155 {
2157 register Lisp_Object val; 2156 register Lisp_Object val;
2158 register int size; 2157 register int size;
2159 2158
2335 return v; 2334 return v;
2336 } 2335 }
2337 2336
2338 2337
2339 DEFUN ("make-vector", Fmake_vector, Smake_vector, 2, 2, 0, 2338 DEFUN ("make-vector", Fmake_vector, Smake_vector, 2, 2, 0,
2340 /* Return a newly created vector of length LENGTH, with each element being INIT. 2339 doc: /* Return a newly created vector of length LENGTH, with each element being INIT.
2341 See also the function `vector'. */ 2340 See also the function `vector'. */)
2342 (length, init)) 2341 (length, init)
2343 register Lisp_Object length, init; 2342 register Lisp_Object length, init;
2344 { 2343 {
2345 Lisp_Object vector; 2344 Lisp_Object vector;
2346 register EMACS_INT sizei; 2345 register EMACS_INT sizei;
2347 register int index; 2346 register int index;
2358 return vector; 2357 return vector;
2359 } 2358 }
2360 2359
2361 2360
2362 DEFUN ("make-char-table", Fmake_char_table, Smake_char_table, 1, 2, 0, 2361 DEFUN ("make-char-table", Fmake_char_table, Smake_char_table, 1, 2, 0,
2363 /* Return a newly created char-table, with purpose PURPOSE. 2362 doc: /* Return a newly created char-table, with purpose PURPOSE.
2364 Each element is initialized to INIT, which defaults to nil. 2363 Each element is initialized to INIT, which defaults to nil.
2365 PURPOSE should be a symbol which has a `char-table-extra-slots' property. 2364 PURPOSE should be a symbol which has a `char-table-extra-slots' property.
2366 The property's value should be an integer between 0 and 10. */ 2365 The property's value should be an integer between 0 and 10. */)
2367 (purpose, init)) 2366 (purpose, init)
2368 register Lisp_Object purpose, init; 2367 register Lisp_Object purpose, init;
2369 { 2368 {
2370 Lisp_Object vector; 2369 Lisp_Object vector;
2371 Lisp_Object n; 2370 Lisp_Object n;
2372 CHECK_SYMBOL (purpose, 1); 2371 CHECK_SYMBOL (purpose, 1);
2401 return vector; 2400 return vector;
2402 } 2401 }
2403 2402
2404 2403
2405 DEFUN ("vector", Fvector, Svector, 0, MANY, 0, 2404 DEFUN ("vector", Fvector, Svector, 0, MANY, 0,
2406 /* Return a newly created vector with specified arguments as elements. 2405 doc: /* Return a newly created vector with specified arguments as elements.
2407 Any number of arguments, even zero arguments, are allowed. */ 2406 Any number of arguments, even zero arguments, are allowed. */)
2408 (nargs, args)) 2407 (nargs, args)
2409 register int nargs; 2408 register int nargs;
2410 Lisp_Object *args; 2409 Lisp_Object *args;
2411 { 2410 {
2412 register Lisp_Object len, val; 2411 register Lisp_Object len, val;
2413 register int index; 2412 register int index;
2421 return val; 2420 return val;
2422 } 2421 }
2423 2422
2424 2423
2425 DEFUN ("make-byte-code", Fmake_byte_code, Smake_byte_code, 4, MANY, 0, 2424 DEFUN ("make-byte-code", Fmake_byte_code, Smake_byte_code, 4, MANY, 0,
2426 /* Create a byte-code object with specified arguments as elements. 2425 doc: /* Create a byte-code object with specified arguments as elements.
2427 The arguments should be the arglist, bytecode-string, constant vector, 2426 The arguments should be the arglist, bytecode-string, constant vector,
2428 stack size, (optional) doc string, and (optional) interactive spec. 2427 stack size, (optional) doc string, and (optional) interactive spec.
2429 The first four arguments are required; at most six have any 2428 The first four arguments are required; at most six have any
2430 significance. */ 2429 significance. */)
2431 (nargs, args)) 2430 (nargs, args)
2432 register int nargs; 2431 register int nargs;
2433 Lisp_Object *args; 2432 Lisp_Object *args;
2434 { 2433 {
2435 register Lisp_Object len, val; 2434 register Lisp_Object len, val;
2436 register int index; 2435 register int index;
2509 n_symbol_blocks = 1; 2508 n_symbol_blocks = 1;
2510 } 2509 }
2511 2510
2512 2511
2513 DEFUN ("make-symbol", Fmake_symbol, Smake_symbol, 1, 1, 0, 2512 DEFUN ("make-symbol", Fmake_symbol, Smake_symbol, 1, 1, 0,
2514 /* Return a newly allocated uninterned symbol whose name is NAME. 2513 doc: /* Return a newly allocated uninterned symbol whose name is NAME.
2515 Its value and function definition are void, and its property list is nil. */ 2514 Its value and function definition are void, and its property list is nil. */)
2516 (name)) 2515 (name)
2517 Lisp_Object name; 2516 Lisp_Object name;
2518 { 2517 {
2519 register Lisp_Object val; 2518 register Lisp_Object val;
2520 register struct Lisp_Symbol *p; 2519 register struct Lisp_Symbol *p;
2521 2520
2627 misc_objects_consed++; 2626 misc_objects_consed++;
2628 return val; 2627 return val;
2629 } 2628 }
2630 2629
2631 DEFUN ("make-marker", Fmake_marker, Smake_marker, 0, 0, 0, 2630 DEFUN ("make-marker", Fmake_marker, Smake_marker, 0, 0, 0,
2632 /* Return a newly allocated marker which does not point at any place. */ 2631 doc: /* Return a newly allocated marker which does not point at any place. */)
2633 ()) 2632 ()
2634 { 2633 {
2635 register Lisp_Object val; 2634 register Lisp_Object val;
2636 register struct Lisp_Marker *p; 2635 register struct Lisp_Marker *p;
2637 2636
2638 val = allocate_misc (); 2637 val = allocate_misc ();
3298 /* Average number of live objects per GC. */ 3297 /* Average number of live objects per GC. */
3299 3298
3300 static double avg_live; 3299 static double avg_live;
3301 3300
3302 DEFUN ("gc-status", Fgc_status, Sgc_status, 0, 0, "", 3301 DEFUN ("gc-status", Fgc_status, Sgc_status, 0, 0, "",
3303 /* Show information about live and zombie objects. */ 3302 doc: /* Show information about live and zombie objects. */)
3304 ()) 3303 ()
3305 { 3304 {
3306 Lisp_Object args[7]; 3305 Lisp_Object args[7];
3307 args[0] = build_string ("%d GCs, avg live/zombies = %.2f/%.2f (%f%%), max %d/%d"); 3306 args[0] = build_string ("%d GCs, avg live/zombies = %.2f/%.2f (%f%%), max %d/%d");
3308 args[1] = make_number (ngcs); 3307 args[1] = make_number (ngcs);
3309 args[2] = make_float (avg_live); 3308 args[2] = make_float (avg_live);
3538 /* Mark Lisp data pointed to. This is necessary because, in some 3537 /* Mark Lisp data pointed to. This is necessary because, in some
3539 situations, the C compiler optimizes Lisp objects away, so that 3538 situations, the C compiler optimizes Lisp objects away, so that
3540 only a pointer to them remains. Example: 3539 only a pointer to them remains. Example:
3541 3540
3542 DEFUN ("testme", Ftestme, Stestme, 0, 0, 0, "") 3541 DEFUN ("testme", Ftestme, Stestme, 0, 0, 0, "")
3543 () 3542 ()
3544 { 3543 {
3545 Lisp_Object obj = build_string ("test"); 3544 Lisp_Object obj = build_string ("test");
3546 struct Lisp_String *s = XSTRING (obj); 3545 struct Lisp_String *s = XSTRING (obj);
3547 Fgarbage_collect (); 3546 Fgarbage_collect ();
3548 fprintf (stderr, "test `%s'\n", s->data); 3547 fprintf (stderr, "test `%s'\n", s->data);
3917 return new; 3916 return new;
3918 } 3917 }
3919 3918
3920 3919
3921 DEFUN ("purecopy", Fpurecopy, Spurecopy, 1, 1, 0, 3920 DEFUN ("purecopy", Fpurecopy, Spurecopy, 1, 1, 0,
3922 /* Make a copy of OBJECT in pure storage. 3921 doc: /* Make a copy of OBJECT in pure storage.
3923 Recursively copies contents of vectors and cons cells. 3922 Recursively copies contents of vectors and cons cells.
3924 Does not copy symbols. Copies strings without text properties. */ 3923 Does not copy symbols. Copies strings without text properties. */)
3925 (obj)) 3924 (obj)
3926 register Lisp_Object obj; 3925 register Lisp_Object obj;
3927 { 3926 {
3928 if (NILP (Vpurify_flag)) 3927 if (NILP (Vpurify_flag))
3929 return obj; 3928 return obj;
3930 3929
4014 return count; 4013 return count;
4015 } 4014 }
4016 4015
4017 4016
4018 DEFUN ("garbage-collect", Fgarbage_collect, Sgarbage_collect, 0, 0, "", 4017 DEFUN ("garbage-collect", Fgarbage_collect, Sgarbage_collect, 0, 0, "",
4019 /* Reclaim storage for Lisp objects no longer needed. 4018 doc: /* Reclaim storage for Lisp objects no longer needed.
4020 Returns info on amount of space in use: 4019 Returns info on amount of space in use:
4021 ((USED-CONSES . FREE-CONSES) (USED-SYMS . FREE-SYMS) 4020 ((USED-CONSES . FREE-CONSES) (USED-SYMS . FREE-SYMS)
4022 (USED-MARKERS . FREE-MARKERS) USED-STRING-CHARS USED-VECTOR-SLOTS 4021 (USED-MARKERS . FREE-MARKERS) USED-STRING-CHARS USED-VECTOR-SLOTS
4023 (USED-FLOATS . FREE-FLOATS) (USED-INTERVALS . FREE-INTERVALS) 4022 (USED-FLOATS . FREE-FLOATS) (USED-INTERVALS . FREE-INTERVALS)
4024 (USED-STRINGS . FREE-STRINGS)) 4023 (USED-STRINGS . FREE-STRINGS))
4025 Garbage collection happens automatically if you cons more than 4024 Garbage collection happens automatically if you cons more than
4026 `gc-cons-threshold' bytes of Lisp data since previous garbage collection. */ 4025 `gc-cons-threshold' bytes of Lisp data since previous garbage collection. */)
4027 ()) 4026 ()
4028 { 4027 {
4029 register struct gcpro *tail; 4028 register struct gcpro *tail;
4030 register struct specbinding *bind; 4029 register struct specbinding *bind;
4031 struct catchtag *catch; 4030 struct catchtag *catch;
4032 struct handler *handler; 4031 struct handler *handler;
5319 5318
5320 5319
5321 /* Debugging aids. */ 5320 /* Debugging aids. */
5322 5321
5323 DEFUN ("memory-limit", Fmemory_limit, Smemory_limit, 0, 0, 0, 5322 DEFUN ("memory-limit", Fmemory_limit, Smemory_limit, 0, 0, 0,
5324 /* Return the address of the last byte Emacs has allocated, divided by 1024. 5323 doc: /* Return the address of the last byte Emacs has allocated, divided by 1024.
5325 This may be helpful in debugging Emacs's memory usage. 5324 This may be helpful in debugging Emacs's memory usage.
5326 We divide the value by 1024 to make sure it fits in a Lisp integer. */ 5325 We divide the value by 1024 to make sure it fits in a Lisp integer. */)
5327 ()) 5326 ()
5328 { 5327 {
5329 Lisp_Object end; 5328 Lisp_Object end;
5330 5329
5331 XSETINT (end, (EMACS_INT) sbrk (0) / 1024); 5330 XSETINT (end, (EMACS_INT) sbrk (0) / 1024);
5332 5331
5333 return end; 5332 return end;
5334 } 5333 }
5335 5334
5336 DEFUN ("memory-use-counts", Fmemory_use_counts, Smemory_use_counts, 0, 0, 0, 5335 DEFUN ("memory-use-counts", Fmemory_use_counts, Smemory_use_counts, 0, 0, 0,
5337 /* Return a list of counters that measure how much consing there has been. 5336 doc: /* Return a list of counters that measure how much consing there has been.
5338 Each of these counters increments for a certain kind of object. 5337 Each of these counters increments for a certain kind of object.
5339 The counters wrap around from the largest positive integer to zero. 5338 The counters wrap around from the largest positive integer to zero.
5340 Garbage collection does not decrease them. 5339 Garbage collection does not decrease them.
5341 The elements of the value are as follows: 5340 The elements of the value are as follows:
5342 (CONSES FLOATS VECTOR-CELLS SYMBOLS STRING-CHARS MISCS INTERVALS STRINGS) 5341 (CONSES FLOATS VECTOR-CELLS SYMBOLS STRING-CHARS MISCS INTERVALS STRINGS)
5343 All are in units of 1 = one object consed 5342 All are in units of 1 = one object consed
5344 except for VECTOR-CELLS and STRING-CHARS, which count the total length of 5343 except for VECTOR-CELLS and STRING-CHARS, which count the total length of
5345 objects consed. 5344 objects consed.
5346 MISCS include overlays, markers, and some internal types. 5345 MISCS include overlays, markers, and some internal types.
5347 Frames, windows, buffers, and subprocesses count as vectors 5346 Frames, windows, buffers, and subprocesses count as vectors
5348 (but the contents of a buffer's text do not count here). */ 5347 (but the contents of a buffer's text do not count here). */)
5349 ()) 5348 ()
5350 { 5349 {
5351 Lisp_Object consed[8]; 5350 Lisp_Object consed[8];
5352 5351
5353 consed[0] = make_number (min (MOST_POSITIVE_FIXNUM, cons_cells_consed)); 5352 consed[0] = make_number (min (MOST_POSITIVE_FIXNUM, cons_cells_consed));
5354 consed[1] = make_number (min (MOST_POSITIVE_FIXNUM, floats_consed)); 5353 consed[1] = make_number (min (MOST_POSITIVE_FIXNUM, floats_consed));
5437 } 5436 }
5438 5437
5439 void 5438 void
5440 syms_of_alloc () 5439 syms_of_alloc ()
5441 { 5440 {
5442 DEFVAR_INT ("gc-cons-threshold", &gc_cons_threshold 5441 DEFVAR_INT ("gc-cons-threshold", &gc_cons_threshold,
5443 /* *Number of bytes of consing between garbage collections. 5442 doc: /* *Number of bytes of consing between garbage collections.
5444 Garbage collection can happen automatically once this many bytes have been 5443 Garbage collection can happen automatically once this many bytes have been
5445 allocated since the last garbage collection. All data types count. 5444 allocated since the last garbage collection. All data types count.
5446 5445
5447 Garbage collection happens automatically only when `eval' is called. 5446 Garbage collection happens automatically only when `eval' is called.
5448 5447
5449 By binding this temporarily to a large number, you can effectively 5448 By binding this temporarily to a large number, you can effectively
5450 prevent garbage collection during a part of the program. */); 5449 prevent garbage collection during a part of the program. */);
5451 5450
5452 DEFVAR_INT ("pure-bytes-used", &pure_bytes_used 5451 DEFVAR_INT ("pure-bytes-used", &pure_bytes_used,
5453 /* Number of bytes of sharable Lisp data allocated so far. */); 5452 doc: /* Number of bytes of sharable Lisp data allocated so far. */);
5454 5453
5455 DEFVAR_INT ("cons-cells-consed", &cons_cells_consed 5454 DEFVAR_INT ("cons-cells-consed", &cons_cells_consed,
5456 /* Number of cons cells that have been consed so far. */); 5455 doc: /* Number of cons cells that have been consed so far. */);
5457 5456
5458 DEFVAR_INT ("floats-consed", &floats_consed 5457 DEFVAR_INT ("floats-consed", &floats_consed,
5459 /* Number of floats that have been consed so far. */); 5458 doc: /* Number of floats that have been consed so far. */);
5460 5459
5461 DEFVAR_INT ("vector-cells-consed", &vector_cells_consed 5460 DEFVAR_INT ("vector-cells-consed", &vector_cells_consed,
5462 /* Number of vector cells that have been consed so far. */); 5461 doc: /* Number of vector cells that have been consed so far. */);
5463 5462
5464 DEFVAR_INT ("symbols-consed", &symbols_consed 5463 DEFVAR_INT ("symbols-consed", &symbols_consed,
5465 /* Number of symbols that have been consed so far. */); 5464 doc: /* Number of symbols that have been consed so far. */);
5466 5465
5467 DEFVAR_INT ("string-chars-consed", &string_chars_consed 5466 DEFVAR_INT ("string-chars-consed", &string_chars_consed,
5468 /* Number of string characters that have been consed so far. */); 5467 doc: /* Number of string characters that have been consed so far. */);
5469 5468
5470 DEFVAR_INT ("misc-objects-consed", &misc_objects_consed 5469 DEFVAR_INT ("misc-objects-consed", &misc_objects_consed,
5471 /* Number of miscellaneous objects that have been consed so far. */); 5470 doc: /* Number of miscellaneous objects that have been consed so far. */);
5472 5471
5473 DEFVAR_INT ("intervals-consed", &intervals_consed 5472 DEFVAR_INT ("intervals-consed", &intervals_consed,
5474 /* Number of intervals that have been consed so far. */); 5473 doc: /* Number of intervals that have been consed so far. */);
5475 5474
5476 DEFVAR_INT ("strings-consed", &strings_consed 5475 DEFVAR_INT ("strings-consed", &strings_consed,
5477 /* Number of strings that have been consed so far. */); 5476 doc: /* Number of strings that have been consed so far. */);
5478 5477
5479 DEFVAR_LISP ("purify-flag", &Vpurify_flag 5478 DEFVAR_LISP ("purify-flag", &Vpurify_flag,
5480 /* Non-nil means loading Lisp code in order to dump an executable. 5479 doc: /* Non-nil means loading Lisp code in order to dump an executable.
5481 This means that certain objects should be allocated in shared (pure) space. */); 5480 This means that certain objects should be allocated in shared (pure) space. */);
5482 5481
5483 DEFVAR_INT ("undo-limit", &undo_limit 5482 DEFVAR_INT ("undo-limit", &undo_limit,
5484 /* Keep no more undo information once it exceeds this size. 5483 doc: /* Keep no more undo information once it exceeds this size.
5485 This limit is applied when garbage collection happens. 5484 This limit is applied when garbage collection happens.
5486 The size is counted as the number of bytes occupied, 5485 The size is counted as the number of bytes occupied,
5487 which includes both saved text and other data. */); 5486 which includes both saved text and other data. */);
5488 undo_limit = 20000; 5487 undo_limit = 20000;
5489 5488
5490 DEFVAR_INT ("undo-strong-limit", &undo_strong_limit 5489 DEFVAR_INT ("undo-strong-limit", &undo_strong_limit,
5491 /* Don't keep more than this much size of undo information. 5490 doc: /* Don't keep more than this much size of undo information.
5492 A command which pushes past this size is itself forgotten. 5491 A command which pushes past this size is itself forgotten.
5493 This limit is applied when garbage collection happens. 5492 This limit is applied when garbage collection happens.
5494 The size is counted as the number of bytes occupied, 5493 The size is counted as the number of bytes occupied,
5495 which includes both saved text and other data. */); 5494 which includes both saved text and other data. */);
5496 undo_strong_limit = 30000; 5495 undo_strong_limit = 30000;
5497 5496
5498 DEFVAR_BOOL ("garbage-collection-messages", &garbage_collection_messages 5497 DEFVAR_BOOL ("garbage-collection-messages", &garbage_collection_messages,
5499 /* Non-nil means display messages at start and end of garbage collection. */); 5498 doc: /* Non-nil means display messages at start and end of garbage collection. */);
5500 garbage_collection_messages = 0; 5499 garbage_collection_messages = 0;
5501 5500
5502 DEFVAR_LISP ("post-gc-hook", &Vpost_gc_hook 5501 DEFVAR_LISP ("post-gc-hook", &Vpost_gc_hook,
5503 /* Hook run after garbage collection has finished. */); 5502 doc: /* Hook run after garbage collection has finished. */);
5504 Vpost_gc_hook = Qnil; 5503 Vpost_gc_hook = Qnil;
5505 Qpost_gc_hook = intern ("post-gc-hook"); 5504 Qpost_gc_hook = intern ("post-gc-hook");
5506 staticpro (&Qpost_gc_hook); 5505 staticpro (&Qpost_gc_hook);
5507 5506
5508 /* We build this in advance because if we wait until we need it, we might 5507 /* We build this in advance because if we wait until we need it, we might