mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Re-enable GC mark trace buffer by default
Enable GC_REMEMBER_LAST_MARKED by default (it was disabled in Emacs 29) to make it easier to debug difficult-to-reproduce GC problems encountered by users. This increases GC costs by about 5 %, which can be avoided by turning the mark trace buffer back off using the new --disable-gc-mark-trace option. See discussion at https://lists.gnu.org/archive/html/emacs-devel/2024-09/msg00240.html * configure.ac (--disable-gc-mark-trace): New config option. * etc/NEWS: Mention it. * src/alloc.c: Enable it by default and avoid a compiler warning.
This commit is contained in:
parent
c607701589
commit
4c6f45fa8e
3 changed files with 20 additions and 3 deletions
11
configure.ac
11
configure.ac
|
|
@ -776,6 +776,17 @@ AS_IF([test "$with_android" = no || test -n "$XCONFIGURE"],[
|
||||||
[android_enable_checking=yes
|
[android_enable_checking=yes
|
||||||
export android_enable_checking])])
|
export android_enable_checking])])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([gc-mark-trace],
|
||||||
|
[AS_HELP_STRING([--disable-gc-mark-trace],
|
||||||
|
[disable the mark trace buffer used for debugging the Emacs
|
||||||
|
garbage collector])],
|
||||||
|
[ac_enable_gc_mark_trace="${enableval}"],
|
||||||
|
[ac_enable_gc_mark_trace=yes])
|
||||||
|
if test "x$ac_enable_gc_mark_trace" = xyes ; then
|
||||||
|
AC_DEFINE([GC_REMEMBER_LAST_MARKED], [1],
|
||||||
|
[Define to 1 to enable GC mark trace buffer.])
|
||||||
|
fi
|
||||||
|
|
||||||
dnl The name of this option is unfortunate. It predates, and has no
|
dnl The name of this option is unfortunate. It predates, and has no
|
||||||
dnl relation to, the "sampling-based elisp profiler" added in 24.3.
|
dnl relation to, the "sampling-based elisp profiler" added in 24.3.
|
||||||
dnl Actually, it stops it working.
|
dnl Actually, it stops it working.
|
||||||
|
|
|
||||||
7
etc/NEWS
7
etc/NEWS
|
|
@ -55,6 +55,13 @@ and to resolve potential incompatibilities between GNU/Linux and *BSD
|
||||||
versions of ALSA. Use '--with-sound=alsa' to build with ALSA on these
|
versions of ALSA. Use '--with-sound=alsa' to build with ALSA on these
|
||||||
operating systems instead.
|
operating systems instead.
|
||||||
|
|
||||||
|
---
|
||||||
|
** New configuration option '--disable-gc-mark-trace'.
|
||||||
|
This disables the GC mark trace buffer for about 5 % better garbage
|
||||||
|
collection performance. Doing so may make it more difficult for Emacs
|
||||||
|
developers to help finding GC-related bugs that you run into, which is
|
||||||
|
why it the mark trace buffer is enabled by default.
|
||||||
|
|
||||||
|
|
||||||
* Startup Changes in Emacs 30.1
|
* Startup Changes in Emacs 30.1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6849,11 +6849,10 @@ mark_glyph_matrix (struct glyph_matrix *matrix)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Whether to remember a few of the last marked values for debugging. */
|
|
||||||
#define GC_REMEMBER_LAST_MARKED 0
|
|
||||||
|
|
||||||
#if GC_REMEMBER_LAST_MARKED
|
#if GC_REMEMBER_LAST_MARKED
|
||||||
|
/* Remember a few of the last marked values for debugging purposes. */
|
||||||
enum { LAST_MARKED_SIZE = 1 << 9 }; /* Must be a power of 2. */
|
enum { LAST_MARKED_SIZE = 1 << 9 }; /* Must be a power of 2. */
|
||||||
|
extern Lisp_Object last_marked[LAST_MARKED_SIZE];
|
||||||
Lisp_Object last_marked[LAST_MARKED_SIZE] EXTERNALLY_VISIBLE;
|
Lisp_Object last_marked[LAST_MARKED_SIZE] EXTERNALLY_VISIBLE;
|
||||||
static int last_marked_index;
|
static int last_marked_index;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue