diff options
| author | Stefan Monnier | 2003-11-18 00:39:13 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2003-11-18 00:39:13 +0000 |
| commit | a06681266b5297780c20dc3ddac3ec9d02279f5e (patch) | |
| tree | 9d5a42211bbba350a867063ad7d78258c32104bf /src/alloc.c | |
| parent | 8d0485fad757a0d3e95c567ec3b7f7285d149665 (diff) | |
| download | emacs-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.c | 25 |
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); |