From: Kim F. Storm Date: Thu, 24 Jun 2004 22:02:23 +0000 (+0000) Subject: (allocate_misc): Update total_free_markers. X-Git-Tag: ttn-vms-21-2-B4~5641 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7b7990cc6709b39c98d5f781daa47a2afe6a6f8b;p=emacs.git (allocate_misc): Update total_free_markers. (free_misc): New function. (safe_alloca_unwind, free_marker): Use it. --- diff --git a/src/ChangeLog b/src/ChangeLog index ada85adaa1b..67eecfe6f55 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,13 @@ +2004-06-25 Kim F. Storm + + * 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 * emacs.c (Vsignal_USR1_hook, Vsignal_USR2_hook): Definitions deleted. diff --git a/src/alloc.c b/src/alloc.c index 06f7eb6174e..7ec882f3dd3 100644 --- a/src/alloc.c +++ b/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); }