aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorRichard M. Stallman2003-04-06 20:27:19 +0000
committerRichard M. Stallman2003-04-06 20:27:19 +0000
commit918a23a7d96ac12d9d072a1631a94350f7f4787a (patch)
tree6ae75de0c6153c769ed4e6fe6e32d03051e7729a /src/alloc.c
parenta3a349c42d8d0bf8efdecb578ec4985101f73061 (diff)
downloademacs-918a23a7d96ac12d9d072a1631a94350f7f4787a.tar.gz
emacs-918a23a7d96ac12d9d072a1631a94350f7f4787a.zip
(VALIDATE_LISP_STORAGE): Macro deleted. All calls deleted.
(lisp_malloc): Do the work here directly.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c42
1 files changed, 17 insertions, 25 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 0fc3198b773..4dcc5b49825 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -84,23 +84,6 @@ extern __malloc_size_t __malloc_extra_blocks;
84 84
85#endif /* not DOUG_LEA_MALLOC */ 85#endif /* not DOUG_LEA_MALLOC */
86 86
87/* Macro to verify that storage intended for Lisp objects is not
88 out of range to fit in the space for a pointer.
89 ADDRESS is the start of the block, and SIZE
90 is the amount of space within which objects can start. */
91
92#define VALIDATE_LISP_STORAGE(address, size) \
93do \
94 { \
95 Lisp_Object val; \
96 XSETCONS (val, (char *) address + size); \
97 if ((char *) XCONS (val) != (char *) address + size) \
98 { \
99 xfree (address); \
100 memory_full (); \
101 } \
102 } while (0)
103
104/* Value of _bytes_used, when spare_memory was freed. */ 87/* Value of _bytes_used, when spare_memory was freed. */
105 88
106static __malloc_size_t bytes_used_when_full; 89static __malloc_size_t bytes_used_when_full;
@@ -584,6 +567,8 @@ xstrdup (s)
584 number of bytes to allocate, TYPE describes the intended use of the 567 number of bytes to allocate, TYPE describes the intended use of the
585 allcated memory block (for strings, for conses, ...). */ 568 allcated memory block (for strings, for conses, ...). */
586 569
570static void *lisp_malloc_loser;
571
587static POINTER_TYPE * 572static POINTER_TYPE *
588lisp_malloc (nbytes, type) 573lisp_malloc (nbytes, type)
589 size_t nbytes; 574 size_t nbytes;
@@ -599,6 +584,21 @@ lisp_malloc (nbytes, type)
599 584
600 val = (void *) malloc (nbytes); 585 val = (void *) malloc (nbytes);
601 586
587 /* If the memory just allocated cannot be addressed thru a Lisp
588 object's pointer, and it needs to be,
589 that's equivalent to running out of memory. */
590 if (val && type != MEM_TYPE_NON_LISP)
591 {
592 Lisp_Object tem;
593 XSETCONS (tem, (char *) val + nbytes - 1);
594 if ((char *) XCONS (tem) != (char *) val + nbytes - 1)
595 {
596 lisp_malloc_loser = val;
597 free (val);
598 val = 0;
599 }
600 }
601
602#if GC_MARK_STACK && !defined GC_MALLOC_CHECK 602#if GC_MARK_STACK && !defined GC_MALLOC_CHECK
603 if (val && type != MEM_TYPE_NON_LISP) 603 if (val && type != MEM_TYPE_NON_LISP)
604 mem_insert (val, (char *) val + nbytes, type); 604 mem_insert (val, (char *) val + nbytes, type);
@@ -620,7 +620,6 @@ allocate_buffer ()
620 struct buffer *b 620 struct buffer *b
621 = (struct buffer *) lisp_malloc (sizeof (struct buffer), 621 = (struct buffer *) lisp_malloc (sizeof (struct buffer),
622 MEM_TYPE_BUFFER); 622 MEM_TYPE_BUFFER);
623 VALIDATE_LISP_STORAGE (b, sizeof *b);
624 return b; 623 return b;
625} 624}
626 625
@@ -932,7 +931,6 @@ make_interval ()
932 newi = (struct interval_block *) lisp_malloc (sizeof *newi, 931 newi = (struct interval_block *) lisp_malloc (sizeof *newi,
933 MEM_TYPE_NON_LISP); 932 MEM_TYPE_NON_LISP);
934 933
935 VALIDATE_LISP_STORAGE (newi, sizeof *newi);
936 newi->next = interval_block; 934 newi->next = interval_block;
937 interval_block = newi; 935 interval_block = newi;
938 interval_block_index = 0; 936 interval_block_index = 0;
@@ -1315,7 +1313,6 @@ allocate_string ()
1315 int i; 1313 int i;
1316 1314
1317 b = (struct string_block *) lisp_malloc (sizeof *b, MEM_TYPE_STRING); 1315 b = (struct string_block *) lisp_malloc (sizeof *b, MEM_TYPE_STRING);
1318 VALIDATE_LISP_STORAGE (b, sizeof *b);
1319 bzero (b, sizeof *b); 1316 bzero (b, sizeof *b);
1320 b->next = string_blocks; 1317 b->next = string_blocks;
1321 string_blocks = b; 1318 string_blocks = b;
@@ -1983,7 +1980,6 @@ make_float (float_value)
1983 1980
1984 new = (struct float_block *) lisp_malloc (sizeof *new, 1981 new = (struct float_block *) lisp_malloc (sizeof *new,
1985 MEM_TYPE_FLOAT); 1982 MEM_TYPE_FLOAT);
1986 VALIDATE_LISP_STORAGE (new, sizeof *new);
1987 new->next = float_block; 1983 new->next = float_block;
1988 float_block = new; 1984 float_block = new;
1989 float_block_index = 0; 1985 float_block_index = 0;
@@ -2090,7 +2086,6 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0,
2090 register struct cons_block *new; 2086 register struct cons_block *new;
2091 new = (struct cons_block *) lisp_malloc (sizeof *new, 2087 new = (struct cons_block *) lisp_malloc (sizeof *new,
2092 MEM_TYPE_CONS); 2088 MEM_TYPE_CONS);
2093 VALIDATE_LISP_STORAGE (new, sizeof *new);
2094 new->next = cons_block; 2089 new->next = cons_block;
2095 cons_block = new; 2090 cons_block = new;
2096 cons_block_index = 0; 2091 cons_block_index = 0;
@@ -2250,7 +2245,6 @@ allocate_vectorlike (len, type)
2250 mallopt (M_MMAP_MAX, MMAP_MAX_AREAS); 2245 mallopt (M_MMAP_MAX, MMAP_MAX_AREAS);
2251#endif 2246#endif
2252 2247
2253 VALIDATE_LISP_STORAGE (p, 0);
2254 consing_since_gc += nbytes; 2248 consing_since_gc += nbytes;
2255 vector_cells_consed += len; 2249 vector_cells_consed += len;
2256 2250
@@ -2548,7 +2542,6 @@ Its value and function definition are void, and its property list is nil. */)
2548 struct symbol_block *new; 2542 struct symbol_block *new;
2549 new = (struct symbol_block *) lisp_malloc (sizeof *new, 2543 new = (struct symbol_block *) lisp_malloc (sizeof *new,
2550 MEM_TYPE_SYMBOL); 2544 MEM_TYPE_SYMBOL);
2551 VALIDATE_LISP_STORAGE (new, sizeof *new);
2552 new->next = symbol_block; 2545 new->next = symbol_block;
2553 symbol_block = new; 2546 symbol_block = new;
2554 symbol_block_index = 0; 2547 symbol_block_index = 0;
@@ -2629,7 +2622,6 @@ allocate_misc ()
2629 struct marker_block *new; 2622 struct marker_block *new;
2630 new = (struct marker_block *) lisp_malloc (sizeof *new, 2623 new = (struct marker_block *) lisp_malloc (sizeof *new,
2631 MEM_TYPE_MISC); 2624 MEM_TYPE_MISC);
2632 VALIDATE_LISP_STORAGE (new, sizeof *new);
2633 new->next = marker_block; 2625 new->next = marker_block;
2634 marker_block = new; 2626 marker_block = new;
2635 marker_block_index = 0; 2627 marker_block_index = 0;