aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorStefan Monnier2003-11-18 00:39:13 +0000
committerStefan Monnier2003-11-18 00:39:13 +0000
commita06681266b5297780c20dc3ddac3ec9d02279f5e (patch)
tree9d5a42211bbba350a867063ad7d78258c32104bf /src/alloc.c
parent8d0485fad757a0d3e95c567ec3b7f7285d149665 (diff)
downloademacs-a06681266b5297780c20dc3ddac3ec9d02279f5e.tar.gz
emacs-a06681266b5297780c20dc3ddac3ec9d02279f5e.zip
(make_float, Fcons): Clear the markbit at init time.
(make_float, Fcons, Fmake_symbol, allocate_misc): Move the increment of block_index outside of the macro call. (Fgarbage_collect): Remove null code.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/alloc.c b/src/alloc.c
index a001413cb52..1835d2a59eb 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -2229,15 +2229,17 @@ make_float (float_value)
2229 new = (struct float_block *) lisp_align_malloc (sizeof *new, 2229 new = (struct float_block *) lisp_align_malloc (sizeof *new,
2230 MEM_TYPE_FLOAT); 2230 MEM_TYPE_FLOAT);
2231 new->next = float_block; 2231 new->next = float_block;
2232 bzero ((char *) new->gcmarkbits, sizeof new->gcmarkbits);
2232 float_block = new; 2233 float_block = new;
2233 float_block_index = 0; 2234 float_block_index = 0;
2234 n_float_blocks++; 2235 n_float_blocks++;
2235 } 2236 }
2236 XSETFLOAT (val, &float_block->floats[float_block_index++]); 2237 XSETFLOAT (val, &float_block->floats[float_block_index]);
2238 float_block_index++;
2237 } 2239 }
2238 2240
2239 XFLOAT_DATA (val) = float_value; 2241 XFLOAT_DATA (val) = float_value;
2240 FLOAT_UNMARK (XFLOAT (val)); 2242 eassert (!FLOAT_MARKED_P (XFLOAT (val)));
2241 consing_since_gc += sizeof (struct Lisp_Float); 2243 consing_since_gc += sizeof (struct Lisp_Float);
2242 floats_consed++; 2244 floats_consed++;
2243 return val; 2245 return val;
@@ -2345,17 +2347,19 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0,
2345 register struct cons_block *new; 2347 register struct cons_block *new;
2346 new = (struct cons_block *) lisp_align_malloc (sizeof *new, 2348 new = (struct cons_block *) lisp_align_malloc (sizeof *new,
2347 MEM_TYPE_CONS); 2349 MEM_TYPE_CONS);
2350 bzero ((char *) new->gcmarkbits, sizeof new->gcmarkbits);
2348 new->next = cons_block; 2351 new->next = cons_block;
2349 cons_block = new; 2352 cons_block = new;
2350 cons_block_index = 0; 2353 cons_block_index = 0;
2351 n_cons_blocks++; 2354 n_cons_blocks++;
2352 } 2355 }
2353 XSETCONS (val, &cons_block->conses[cons_block_index++]); 2356 XSETCONS (val, &cons_block->conses[cons_block_index]);
2357 cons_block_index++;
2354 } 2358 }
2355 2359
2356 XSETCAR (val, car); 2360 XSETCAR (val, car);
2357 XSETCDR (val, cdr); 2361 XSETCDR (val, cdr);
2358 CONS_UNMARK (XCONS (val)); 2362 eassert (!CONS_MARKED_P (XCONS (val)));
2359 consing_since_gc += sizeof (struct Lisp_Cons); 2363 consing_since_gc += sizeof (struct Lisp_Cons);
2360 cons_cells_consed++; 2364 cons_cells_consed++;
2361 return val; 2365 return val;
@@ -2804,7 +2808,8 @@ Its value and function definition are void, and its property list is nil. */)
2804 symbol_block_index = 0; 2808 symbol_block_index = 0;
2805 n_symbol_blocks++; 2809 n_symbol_blocks++;
2806 } 2810 }
2807 XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index++]); 2811 XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index]);
2812 symbol_block_index++;
2808 } 2813 }
2809 2814
2810 p = XSYMBOL (val); 2815 p = XSYMBOL (val);
@@ -2882,7 +2887,8 @@ allocate_misc ()
2882 marker_block_index = 0; 2887 marker_block_index = 0;
2883 n_marker_blocks++; 2888 n_marker_blocks++;
2884 } 2889 }
2885 XSETMISC (val, &marker_block->markers[marker_block_index++]); 2890 XSETMISC (val, &marker_block->markers[marker_block_index]);
2891 marker_block_index++;
2886 } 2892 }
2887 2893
2888 consing_since_gc += sizeof (union Lisp_Misc); 2894 consing_since_gc += sizeof (union Lisp_Misc);
@@ -4494,13 +4500,6 @@ returns nil, because real GC can't be done. */)
4494 4500
4495 /* Clear the mark bits that we set in certain root slots. */ 4501 /* Clear the mark bits that we set in certain root slots. */
4496 4502
4497#if (GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE \
4498 || GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES)
4499 {
4500 register struct gcpro *tail;
4501 }
4502#endif
4503
4504 unmark_byte_stack (); 4503 unmark_byte_stack ();
4505 VECTOR_UNMARK (&buffer_defaults); 4504 VECTOR_UNMARK (&buffer_defaults);
4506 VECTOR_UNMARK (&buffer_local_symbols); 4505 VECTOR_UNMARK (&buffer_local_symbols);