(allocate_misc): Update total_free_markers.
(free_misc): New function. (safe_alloca_unwind, free_marker): Use it.
This commit is contained in:
parent
69968400c3
commit
7b7990cc67
2 changed files with 27 additions and 6 deletions
|
@ -1,3 +1,13 @@
|
|||
2004-06-25 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* alloc.c (allocate_misc): Update total_free_markers.
|
||||
(free_misc): New function.
|
||||
(safe_alloca_unwind, free_marker): Use it.
|
||||
|
||||
* lisp.h (free_misc): Add prototype.
|
||||
|
||||
* fns.c (Fmapconcat, Fmapcar): Remove superfluous GCPROs.
|
||||
|
||||
2004-06-24 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* emacs.c (Vsignal_USR1_hook, Vsignal_USR2_hook): Definitions deleted.
|
||||
|
|
23
src/alloc.c
23
src/alloc.c
|
@ -590,6 +590,7 @@ safe_alloca_unwind (arg)
|
|||
p->dogc = 0;
|
||||
xfree (p->pointer);
|
||||
p->pointer = 0;
|
||||
free_misc (arg);
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
|
@ -2921,17 +2922,32 @@ allocate_misc ()
|
|||
marker_block = new;
|
||||
marker_block_index = 0;
|
||||
n_marker_blocks++;
|
||||
total_free_markers += MARKER_BLOCK_SIZE;
|
||||
}
|
||||
XSETMISC (val, &marker_block->markers[marker_block_index]);
|
||||
marker_block_index++;
|
||||
}
|
||||
|
||||
--total_free_markers;
|
||||
consing_since_gc += sizeof (union Lisp_Misc);
|
||||
misc_objects_consed++;
|
||||
XMARKER (val)->gcmarkbit = 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
/* Free a Lisp_Misc object */
|
||||
|
||||
void
|
||||
free_misc (misc)
|
||||
Lisp_Object misc;
|
||||
{
|
||||
XMISC (misc)->u_marker.type = Lisp_Misc_Free;
|
||||
XMISC (misc)->u_free.chain = marker_free_list;
|
||||
marker_free_list = XMISC (misc);
|
||||
|
||||
total_free_markers++;
|
||||
}
|
||||
|
||||
/* Return a Lisp_Misc_Save_Value object containing POINTER and
|
||||
INTEGER. This is used to package C values to call record_unwind_protect.
|
||||
The unwind function can get the C values back using XSAVE_VALUE. */
|
||||
|
@ -2978,12 +2994,7 @@ free_marker (marker)
|
|||
Lisp_Object marker;
|
||||
{
|
||||
unchain_marker (XMARKER (marker));
|
||||
|
||||
XMISC (marker)->u_marker.type = Lisp_Misc_Free;
|
||||
XMISC (marker)->u_free.chain = marker_free_list;
|
||||
marker_free_list = XMISC (marker);
|
||||
|
||||
total_free_markers++;
|
||||
free_misc (marker);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue