Enable conservative stack scanning for all architectures.

Suggested by Stefan Monnier in
<http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00183.html>.
* configure.ac (GC_MARK_STACK): Remove.
This commit is contained in:
Paul Eggert 2013-01-11 21:21:06 -08:00
parent 96c421bba7
commit 444b01bb49
3 changed files with 14 additions and 13 deletions

View file

@ -1,3 +1,10 @@
2013-01-12 Paul Eggert <eggert@cs.ucla.edu>
Enable conservative stack scanning for all architectures.
Suggested by Stefan Monnier in
<http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00183.html>.
* configure.ac (GC_MARK_STACK): Remove.
2013-01-11 Paul Eggert <eggert@cs.ucla.edu>
* lib/getopt_.h: Remove trailing CRs that crept in.

View file

@ -3777,22 +3777,13 @@ case $opsys in
esac
dnl These won't be used automatically yet. We also need to know, at least,
dnl This won't be used automatically yet. We also need to know, at least,
dnl that the stack is continuous.
AH_TEMPLATE(GC_SETJMP_WORKS, [Define if setjmp is known to save all
registers relevant for conservative garbage collection in the jmp_buf.])
AH_TEMPLATE(GC_MARK_STACK, [Define to GC_USE_GCPROS_AS_BEFORE if
conservative garbage collection is not known to work.])
case $opsys in
aix4-2 | hpux* | unixware)
dnl Conservative garbage collection has not been tested, so for now
dnl play it safe and stick with the old-fashioned way of marking.
AC_DEFINE(GC_MARK_STACK, [GC_USE_GCPROS_AS_BEFORE])
;;
dnl Not all the architectures are tested, but there are Debian packages
dnl for SCM and/or Guile on them, so the technique must work. See also
dnl comments in alloc.c concerning setjmp and gcc.
@ -3807,8 +3798,7 @@ case $opsys in
#else
# error "setjmp not known to work on this arch"
#endif
]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1),
AC_DEFINE(GC_MARK_STACK, [GC_USE_GCPROS_AS_BEFORE]) )
]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1))
;;
esac

View file

@ -2217,8 +2217,12 @@ struct gcpro
2 Mark the stack, and check that everything GCPRO'd is
marked.
3 Mark using GCPRO's, mark stack last, and count how many
dead objects are kept alive. */
dead objects are kept alive.
Formerly, method 0 was used. Currently, method 1 is used unless
otherwise specified by hand when building, e.g.,
"make CPPFLAGS='-DGC_MARK_STACK=GC_USE_GCPROS_AS_BEFORE'".
Methods 2 and 3 are present mainly to debug the transition from 0 to 1. */
#define GC_USE_GCPROS_AS_BEFORE 0
#define GC_MAKE_GCPROS_NOOPS 1