+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.
p->dogc = 0;
xfree (p->pointer);
p->pointer = 0;
+ free_misc (arg);
return Qnil;
}
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. */
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);
}
\f