# HG changeset patch # User Kim F. Storm # Date 1088114487 0 # Node ID a446552d2240c58314c6ead0f8de1a9332ff4b08 # Parent f186f03b4d6b46c7749c40a83e8913252311fa76 (allocate_misc): Update total_free_markers. (free_misc): New function. (safe_alloca_unwind, free_marker): Use it. diff -r f186f03b4d6b -r a446552d2240 src/alloc.c --- a/src/alloc.c Thu Jun 24 20:29:41 2004 +0000 +++ b/src/alloc.c Thu Jun 24 22:01:27 2004 +0000 @@ -590,6 +590,7 @@ p->dogc = 0; xfree (p->pointer); p->pointer = 0; + free_misc (arg); return Qnil; } @@ -2921,17 +2922,32 @@ 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 @@ 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); }