From b948ce8b0244181c9e08d6bfc635ead24b4e9742 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 13 Apr 2012 23:18:49 -0700 Subject: Make GC_MAKE_GCPROS_NOOPS the default (Bug#9926). * lisp.h (GC_MARK_STACK): Default to GC_MAKE_GCPROS_NOOPS. * s/cygwin.h, s/darwin.h, s/freebsd.h, s/gnu.h, s/irix6-5.h, s/msdos.h: * s/netbsd.h, s/sol2-6.h: Remove definition of GC_MARK_STACK, since the default now works. * s/aix4-2.h, s/hpux10-20.h, s/unixware.h: Define GC_MARK_STACK to GC_USE_GCPROS_AS_BEFORE, since that's no longer the default. * s/gnu-linux.h (GC_MARK_STACK): Adjust to change in default. --- src/ChangeLog | 12 ++++++++++++ src/lisp.h | 2 +- src/s/aix4-2.h | 4 ++++ src/s/cygwin.h | 6 ------ src/s/darwin.h | 3 --- src/s/freebsd.h | 3 --- src/s/gnu-linux.h | 3 ++- src/s/gnu.h | 3 --- src/s/hpux10-20.h | 4 ++++ src/s/irix6-5.h | 1 - src/s/msdos.h | 1 - src/s/netbsd.h | 3 --- src/s/sol2-6.h | 1 - src/s/unixware.h | 4 ++++ 14 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 6d2ed01baf..c3a72f335a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,15 @@ +2012-04-14 Paul Eggert + + Make GC_MAKE_GCPROS_NOOPS the default (Bug#9926). + * lisp.h (GC_MARK_STACK): Default to GC_MAKE_GCPROS_NOOPS. + * s/cygwin.h, s/darwin.h, s/freebsd.h, s/gnu.h, s/irix6-5.h, s/msdos.h: + * s/netbsd.h, s/sol2-6.h: + Remove definition of GC_MARK_STACK, since the default now works. + * s/aix4-2.h, s/hpux10-20.h, s/unixware.h: + Define GC_MARK_STACK to GC_USE_GCPROS_AS_BEFORE, since that's + no longer the default. + * s/gnu-linux.h (GC_MARK_STACK): Adjust to change in default. + 2012-04-14 Atsuo Ohki (tiny change) * lread.c (lisp_file_lexically_bound_p): diff --git a/src/lisp.h b/src/lisp.h index 6041cad0d3..81d17f4b92 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -2221,7 +2221,7 @@ struct gcpro #define GC_USE_GCPROS_CHECK_ZOMBIES 3 #ifndef GC_MARK_STACK -#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE +#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS #endif /* Whether we do the stack marking manually. */ diff --git a/src/s/aix4-2.h b/src/s/aix4-2.h index 37b041396f..354ffda098 100644 --- a/src/s/aix4-2.h +++ b/src/s/aix4-2.h @@ -75,3 +75,7 @@ along with GNU Emacs. If not, see . */ Emacs currently calls xrealloc on the results of get_current_dir name, to avoid a crash just use the Emacs implementation for that function. */ #define BROKEN_GET_CURRENT_DIR_NAME 1 + +/* Conservative garbage collection has not been tested, so for now + play it safe and stick with the old-fashioned way of marking. */ +#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE diff --git a/src/s/cygwin.h b/src/s/cygwin.h index f8c656e8eb..9310890351 100644 --- a/src/s/cygwin.h +++ b/src/s/cygwin.h @@ -82,12 +82,6 @@ along with GNU Emacs. If not, see . */ #define HAVE_SOCKETS -/* This should work (at least when compiling with gcc). But I have no way - or intention to verify or even test it. If you encounter a problem with - it, feel free to change this setting, but please add a comment here about - why it needed to be changed. */ -#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS - /* Emacs supplies its own malloc, but glib (part of Gtk+) calls memalign and on Cygwin, that becomes the Cygwin-supplied memalign. As malloc is not the Cygwin malloc, the Cygwin memalign always diff --git a/src/s/darwin.h b/src/s/darwin.h index 9ac9e91fd9..7c8e26f46c 100644 --- a/src/s/darwin.h +++ b/src/s/darwin.h @@ -145,6 +145,3 @@ along with GNU Emacs. If not, see . */ It is already a controlling terminal of subprocess, because we did ioctl TIOCSCTTY. */ #define DONT_REOPEN_PTY - -/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack. */ -#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS diff --git a/src/s/freebsd.h b/src/s/freebsd.h index c74605fe36..05be07695c 100644 --- a/src/s/freebsd.h +++ b/src/s/freebsd.h @@ -58,6 +58,3 @@ along with GNU Emacs. If not, see . */ /* Tell that garbage collector that setjmp is known to save all registers relevant for conservative garbage collection in the jmp_buf. */ #define GC_SETJMP_WORKS 1 - -/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack. */ -#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS diff --git a/src/s/gnu-linux.h b/src/s/gnu-linux.h index c1233c0e6c..d04ea33068 100644 --- a/src/s/gnu-linux.h +++ b/src/s/gnu-linux.h @@ -145,7 +145,6 @@ along with GNU Emacs. If not, see . */ || defined __arm__ || defined __powerpc__ || defined __amd64__ \ || defined __ia64__ || defined __sh__ #define GC_SETJMP_WORKS 1 -#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS #ifdef __ia64__ #define GC_MARK_SECONDARY_STACK() \ do { \ @@ -155,4 +154,6 @@ along with GNU Emacs. If not, see . */ __builtin_ia64_bsp ()); \ } while (0) #endif +#else +#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE #endif diff --git a/src/s/gnu.h b/src/s/gnu.h index 37aaa1357c..a09e0e824c 100644 --- a/src/s/gnu.h +++ b/src/s/gnu.h @@ -45,6 +45,3 @@ along with GNU Emacs. If not, see . */ #endif /* emacs */ #define POSIX_SIGNALS 1 - -/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack. */ -#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS diff --git a/src/s/hpux10-20.h b/src/s/hpux10-20.h index becb5d3464..3e25b1bd0d 100644 --- a/src/s/hpux10-20.h +++ b/src/s/hpux10-20.h @@ -100,6 +100,10 @@ along with GNU Emacs. If not, see . */ header sections which lose when `static' is defined away, as it is on HP-UX. (You get duplicate symbol errors on linking). */ #undef _FILE_OFFSET_BITS + +/* Conservative garbage collection has not been tested, so for now + play it safe and stick with the old-fashioned way of marking. */ +#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE /* The data segment on this machine always starts at address 0x40000000. */ #define DATA_SEG_BITS 0x40000000 diff --git a/src/s/irix6-5.h b/src/s/irix6-5.h index 32374498fe..e5d90c1bd5 100644 --- a/src/s/irix6-5.h +++ b/src/s/irix6-5.h @@ -95,7 +95,6 @@ char *_getpty(); /* Tested on Irix 6.5. SCM worked on earlier versions. */ #define GC_SETJMP_WORKS 1 -#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers which diff --git a/src/s/msdos.h b/src/s/msdos.h index cde24147c5..add2902d5f 100644 --- a/src/s/msdos.h +++ b/src/s/msdos.h @@ -137,4 +137,3 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */ /* Tell the garbage collector that setjmp is known to save all registers relevant for conservative garbage collection in the jmp_buf. */ #define GC_SETJMP_WORKS 1 -#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS diff --git a/src/s/netbsd.h b/src/s/netbsd.h index f25023fb61..ce3b2afa1b 100644 --- a/src/s/netbsd.h +++ b/src/s/netbsd.h @@ -38,6 +38,3 @@ along with GNU Emacs. If not, see . */ /* Tell that garbage collector that setjmp is known to save all registers relevant for conservative garbage collection in the jmp_buf. */ #define GC_SETJMP_WORKS 1 - -/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method. */ -#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS diff --git a/src/s/sol2-6.h b/src/s/sol2-6.h index a9fefcb199..bb7a9859b7 100644 --- a/src/s/sol2-6.h +++ b/src/s/sol2-6.h @@ -59,4 +59,3 @@ along with GNU Emacs. If not, see . */ } #define GC_SETJMP_WORKS 1 -#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS diff --git a/src/s/unixware.h b/src/s/unixware.h index 22c396a060..63c36ee40c 100644 --- a/src/s/unixware.h +++ b/src/s/unixware.h @@ -50,3 +50,7 @@ along with GNU Emacs. If not, see . */ } #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__ptr - (FILE)->__base) + +/* Conservative garbage collection has not been tested, so for now + play it safe and stick with the old-fashioned way of marking. */ +#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE -- cgit v1.2.3