aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorEli Zaretskii2013-12-07 19:21:57 +0200
committerEli Zaretskii2013-12-07 19:21:57 +0200
commitce1d7b61f12dcc1b67535b68d9b0655b45fcadb6 (patch)
tree881d03f4f486933482cd2e3851184cd3b172ef1b /src/alloc.c
parent6630df25238c5a1efa2bc6a0fa7889782e8c91b5 (diff)
parentfa6fa1a1773f255b5efbe52a743b017f4908a6cb (diff)
downloademacs-ce1d7b61f12dcc1b67535b68d9b0655b45fcadb6.tar.gz
emacs-ce1d7b61f12dcc1b67535b68d9b0655b45fcadb6.zip
Merge from trunk.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/alloc.c b/src/alloc.c
index f12fdc5c861..f076075a94f 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -2066,20 +2066,20 @@ Lisp_Object
2066make_uninit_bool_vector (EMACS_INT nbits) 2066make_uninit_bool_vector (EMACS_INT nbits)
2067{ 2067{
2068 Lisp_Object val; 2068 Lisp_Object val;
2069 struct Lisp_Bool_Vector *p; 2069 EMACS_INT words = bool_vector_words (nbits);
2070 EMACS_INT word_bytes, needed_elements; 2070 EMACS_INT word_bytes = words * sizeof (bits_word);
2071 word_bytes = bool_vector_words (nbits) * sizeof (bits_word); 2071 EMACS_INT needed_elements = ((bool_header_size - header_size + word_bytes
2072 needed_elements = ((bool_header_size - header_size + word_bytes 2072 + word_size - 1)
2073 + word_size - 1) 2073 / word_size);
2074 / word_size); 2074 struct Lisp_Bool_Vector *p
2075 p = (struct Lisp_Bool_Vector *) allocate_vector (needed_elements); 2075 = (struct Lisp_Bool_Vector *) allocate_vector (needed_elements);
2076 XSETVECTOR (val, p); 2076 XSETVECTOR (val, p);
2077 XSETPVECTYPESIZE (XVECTOR (val), PVEC_BOOL_VECTOR, 0, 0); 2077 XSETPVECTYPESIZE (XVECTOR (val), PVEC_BOOL_VECTOR, 0, 0);
2078 p->size = nbits; 2078 p->size = nbits;
2079 2079
2080 /* Clear padding at the end. */ 2080 /* Clear padding at the end. */
2081 if (nbits) 2081 if (words)
2082 p->data[bool_vector_words (nbits) - 1] = 0; 2082 p->data[words - 1] = 0;
2083 2083
2084 return val; 2084 return val;
2085} 2085}
@@ -3477,7 +3477,7 @@ make_save_ptr_int (void *a, ptrdiff_t b)
3477 return val; 3477 return val;
3478} 3478}
3479 3479
3480#if defined HAVE_MENUS && ! (defined USE_X_TOOLKIT || defined USE_GTK) 3480#if ! (defined USE_X_TOOLKIT || defined USE_GTK)
3481Lisp_Object 3481Lisp_Object
3482make_save_ptr_ptr (void *a, void *b) 3482make_save_ptr_ptr (void *a, void *b)
3483{ 3483{
@@ -4317,7 +4317,7 @@ live_buffer_p (struct mem_node *m, void *p)
4317void dump_zombies (void) EXTERNALLY_VISIBLE; 4317void dump_zombies (void) EXTERNALLY_VISIBLE;
4318 4318
4319/* Array of objects that are kept alive because the C stack contains 4319/* Array of objects that are kept alive because the C stack contains
4320 a pattern that looks like a reference to them . */ 4320 a pattern that looks like a reference to them. */
4321 4321
4322#define MAX_ZOMBIES 10 4322#define MAX_ZOMBIES 10
4323static Lisp_Object zombies[MAX_ZOMBIES]; 4323static Lisp_Object zombies[MAX_ZOMBIES];
@@ -6291,7 +6291,7 @@ survives_gc_p (Lisp_Object obj)
6291 6291
6292 6292
6293 6293
6294/* Sweep: find all structures not marked, and free them. */ 6294/* Sweep: find all structures not marked, and free them. */
6295 6295
6296static void 6296static void
6297gc_sweep (void) 6297gc_sweep (void)
@@ -6303,7 +6303,7 @@ gc_sweep (void)
6303 sweep_strings (); 6303 sweep_strings ();
6304 check_string_bytes (!noninteractive); 6304 check_string_bytes (!noninteractive);
6305 6305
6306 /* Put all unmarked conses on free list */ 6306 /* Put all unmarked conses on free list. */
6307 { 6307 {
6308 register struct cons_block *cblk; 6308 register struct cons_block *cblk;
6309 struct cons_block **cprev = &cons_block; 6309 struct cons_block **cprev = &cons_block;
@@ -6380,7 +6380,7 @@ gc_sweep (void)
6380 total_free_conses = num_free; 6380 total_free_conses = num_free;
6381 } 6381 }
6382 6382
6383 /* Put all unmarked floats on free list */ 6383 /* Put all unmarked floats on free list. */
6384 { 6384 {
6385 register struct float_block *fblk; 6385 register struct float_block *fblk;
6386 struct float_block **fprev = &float_block; 6386 struct float_block **fprev = &float_block;
@@ -6426,7 +6426,7 @@ gc_sweep (void)
6426 total_free_floats = num_free; 6426 total_free_floats = num_free;
6427 } 6427 }
6428 6428
6429 /* Put all unmarked intervals on free list */ 6429 /* Put all unmarked intervals on free list. */
6430 { 6430 {
6431 register struct interval_block *iblk; 6431 register struct interval_block *iblk;
6432 struct interval_block **iprev = &interval_block; 6432 struct interval_block **iprev = &interval_block;
@@ -6475,7 +6475,7 @@ gc_sweep (void)
6475 total_free_intervals = num_free; 6475 total_free_intervals = num_free;
6476 } 6476 }
6477 6477
6478 /* Put all unmarked symbols on free list */ 6478 /* Put all unmarked symbols on free list. */
6479 { 6479 {
6480 register struct symbol_block *sblk; 6480 register struct symbol_block *sblk;
6481 struct symbol_block **sprev = &symbol_block; 6481 struct symbol_block **sprev = &symbol_block;
@@ -6512,7 +6512,7 @@ gc_sweep (void)
6512 { 6512 {
6513 ++num_used; 6513 ++num_used;
6514 if (!pure_p) 6514 if (!pure_p)
6515 UNMARK_STRING (XSTRING (sym->s.name)); 6515 eassert (!STRING_MARKED_P (XSTRING (sym->s.name)));
6516 sym->s.gcmarkbit = 0; 6516 sym->s.gcmarkbit = 0;
6517 } 6517 }
6518 } 6518 }