diff --git a/ChangeLog b/ChangeLog index 59df34b2b8f..f306aefbd1b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-01-12 Paul Eggert + + Enable conservative stack scanning for all architectures. + Suggested by Stefan Monnier in + . + * configure.ac (GC_MARK_STACK): Remove. + 2013-01-11 Paul Eggert * lib/getopt_.h: Remove trailing CRs that crept in. diff --git a/configure.ac b/configure.ac index 4a43fcf8fcd..a0974caa6a3 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/src/lisp.h b/src/lisp.h index 22e0a188e4b..3b7af46fdde 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -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