GNU bug report logs -
#9926
make GC_MAKE_GCPROS_NOOPS the default
Previous Next
Reported by: monnier <at> IRO.UMontreal.CA
Date: Mon, 31 Oct 2011 22:58:02 UTC
Severity: wishlist
Done: Paul Eggert <eggert <at> cs.ucla.edu>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 9926 in the body.
You can then email your comments to 9926 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#9926
; Package
emacs
.
(Mon, 31 Oct 2011 22:58:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Svante Signell <srs <at> kth.se>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Mon, 31 Oct 2011 22:58:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Hello,
Interesting to see that emacs-24.1 is on its way with many new features.
When trying to compile the latest pre-release under GNU/Hurd, the build
fails due to a missing definition in src/gnu.h. Inlined is a patch to
add the proper definition of GC_MARK_STACK (as on many of the other
architectures). Otherwise the global variable: static Lisp_Object Vdead;
is undefined on line 6264: if (!EQ (obj, Vdead)) in function
which_symbols().
Thanks!
--- emacs-24.0.91/src/s/gnu.h~ 2011-10-14 02:40:36.000000000 +0200
+++ emacs-24.0.91/src/s/gnu.h 2011-10-31 23:28:48.000000000 +0100
@@ -44,3 +44,5 @@
#endif /* !_IO_STDIO_H */
#endif /* emacs */
+/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the
stack. */
+#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#9926
; Package
emacs
.
(Tue, 01 Nov 2011 17:46:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 9926 <at> debbugs.gnu.org (full text, mbox):
> Interesting to see that emacs-24.1 is on its way with many new features.
> When trying to compile the latest pre-release under GNU/Hurd, the build
> fails due to a missing definition in src/gnu.h. Inlined is a patch to
> add the proper definition of GC_MARK_STACK (as on many of the other
> architectures). Otherwise the global variable: static Lisp_Object Vdead;
> is undefined on line 6264: if (!EQ (obj, Vdead)) in function
> which_symbols().
Actually GC_MAKE_GCPROS_NOOPS should be made the default, and the build
should succeed even if GC_MARK_STACK is not set to GC_MAKE_GCPROS_NOOPS.
So the bug is in the which_symbols code.
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#9926
; Package
emacs
.
(Mon, 07 Nov 2011 05:47:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 9926 <at> debbugs.gnu.org (full text, mbox):
I installed the following patch in the trunk as bzr 106311
to fix the fails-to-compile bug.
Making GC_MAKE_GCPROS_NOOPS the default sounds good, but as
it doesn't fix a bug and we're in feature-freeze now I left
that for later.
=== modified file 'src/ChangeLog'
--- src/ChangeLog 2011-11-07 02:00:43 +0000
+++ src/ChangeLog 2011-11-07 05:37:49 +0000
@@ -1,3 +1,10 @@
+2011-11-07 Paul Eggert <eggert <at> cs.ucla.edu>
+
+ * alloc.c (DEADP): New macro, for porting to GNU/Hurd (Bug#9926).
+ This is also needed for porting to any host where GC_MARK_STACK is
+ not GC_MAKE_GCPROS_NOOPS.
+ (which_symbols): Use it.
+
2011-11-07 Kenichi Handa <handa <at> m17n.org>
* coding.c (coding_set_destination): Check coding->src_pos only
=== modified file 'src/alloc.c'
--- src/alloc.c 2011-10-29 17:25:44 +0000
+++ src/alloc.c 2011-11-07 05:37:49 +0000
@@ -315,6 +315,7 @@
on free lists recognizable in O(1). */
static Lisp_Object Vdead;
+#define DEADP(x) EQ (x, Vdead)
#ifdef GC_MALLOC_CHECK
@@ -411,6 +412,10 @@
#endif /* GC_MARK_STACK || GC_MALLOC_CHECK */
+#ifndef DEADP
+# define DEADP(x) 0
+#endif
+
/* Recording what needs to be marked for gc. */
struct gcpro *gcprolist;
@@ -6261,7 +6266,7 @@
int gc_count = inhibit_garbage_collection ();
Lisp_Object found = Qnil;
- if (!EQ (obj, Vdead))
+ if (! DEADP (obj))
{
for (sblk = symbol_block; sblk; sblk = sblk->next)
{
Changed bug title to 'make GC_MAKE_GCPROS_NOOPS the default' from 'patch: emacs-24.0.91 FTBFS on GNU/Hurd'
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Mon, 07 Nov 2011 17:18:01 GMT)
Full text and
rfc822 format available.
Severity set to 'wishlist' from 'important'
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Mon, 07 Nov 2011 17:18:01 GMT)
Full text and
rfc822 format available.
Changed bug submitter to 'monnier <at> IRO.UMontreal.CA' from 'Svante Signell <srs <at> kth.se>'
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Mon, 07 Nov 2011 17:18:01 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#9926
; Package
emacs
.
(Tue, 08 Nov 2011 12:25:02 GMT)
Full text and
rfc822 format available.
Message #20 received at submit <at> debbugs.gnu.org (full text, mbox):
> I installed the following patch in the trunk as bzr 106311
> to fix the fails-to-compile bug.
>
> Making GC_MAKE_GCPROS_NOOPS the default sounds good, but as
> it doesn't fix a bug and we're in feature-freeze now I left
> that for later.
>
> === modified file 'src/ChangeLog'
> --- src/ChangeLog 2011-11-07 02:00:43 +0000
> +++ src/ChangeLog 2011-11-07 05:37:49 +0000
> @@ -1,3 +1,10 @@
> +2011-11-07 Paul Eggert <address <at> hidden>
> +
> + * alloc.c (DEADP): New macro, for porting to GNU/Hurd (Bug#9926).
> + This is also needed for porting to any host where GC_MARK_STACK is
> + not GC_MAKE_GCPROS_NOOPS.
> + (which_symbols): Use it.
Reading your patch shows that GC_MARK_STACK will still not be set for
GNU/Hurd. However, the previous comment by Stefan Monnier says that
GC_MAKE_GCPROS_NOOPS should be set as the default. So what is wrong
with patching gnu.h??
Anyway, which are the differences/consequences of that part of the code
in which_symbols being executed compared to not when GC_MARK_STACK is
unset or set to GC_MAKE_GCPROS_NOOPS?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#9926
; Package
emacs
.
(Tue, 08 Nov 2011 13:35:01 GMT)
Full text and
rfc822 format available.
Message #23 received at 9926 <at> debbugs.gnu.org (full text, mbox):
> Anyway, which are the differences/consequences of that part of the code
> in which_symbols being executed compared to not when GC_MARK_STACK is
> unset or set to GC_MAKE_GCPROS_NOOPS?
They don't matter: which_symbols is a function only for use from
a C debugger: there is no call to this function within Emacs itself.
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#9926
; Package
emacs
.
(Tue, 08 Nov 2011 16:48:01 GMT)
Full text and
rfc822 format available.
Message #26 received at 9926 <at> debbugs.gnu.org (full text, mbox):
On 11/08/11 04:21, Svante Signell wrote:
> the previous comment by Stefan Monnier says that
> GC_MAKE_GCPROS_NOOPS should be set as the default. So what is wrong
> with patching gnu.h??
I don't see anything wrong with changing Emacs to use GC_MAKE_GCPROS_NOOPS
on GNU/Hurd. If there's no objection I would like to install the change
suggested by Stefan, which should have the same effect as patching gnu.h
but results in cleaner code internally. Please see the patch below.
> Anyway, which are the differences/consequences of that part of the code
> in which_symbols being executed compared to not when GC_MARK_STACK is
> unset or set to GC_MAKE_GCPROS_NOOPS?
As Stefan wrote, which_symbols is executed only if you run Emacs under
a debugger and execute it yourself. And in that case, the new DEADP
macro should do the right thing, regardless of what GC_MARK_STACK is set
or unset to.
=== modified file 'src/ChangeLog'
--- src/ChangeLog 2011-11-08 07:25:56 +0000
+++ src/ChangeLog 2011-11-08 16:36:16 +0000
@@ -1,3 +1,15 @@
+2011-11-08 Paul Eggert <eggert <at> cs.ucla.edu>
+
+ Set GC_MARK_STACK to GC_MAKE_GCPROS_NOOPS on GNU/Hurd (Bug#9926).
+ * lisp.h (GC_MARK_STACK): Default to GC_MAKE_GCPROS_NOOPS.
+ * s/cygwin.h, s/darwin.h, s/freebsd.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/ms-w32.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.
+
2011-11-08 Chong Yidong <cyd <at> gnu.org>
* window.c (Fwindow_left_column, Fwindow_top_line): Doc fix.
=== modified file 'src/lisp.h'
--- src/lisp.h 2011-11-07 17:04:01 +0000
+++ src/lisp.h 2011-11-08 16:29:11 +0000
@@ -2213,7 +2213,7 @@
#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. */
=== modified file 'src/s/aix4-2.h'
--- src/s/aix4-2.h 2011-07-07 01:32:56 +0000
+++ src/s/aix4-2.h 2011-11-08 16:29:11 +0000
@@ -75,3 +75,7 @@
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
=== modified file 'src/s/cygwin.h'
--- src/s/cygwin.h 2011-03-17 05:15:08 +0000
+++ src/s/cygwin.h 2011-11-08 16:29:11 +0000
@@ -85,12 +85,6 @@
change their controlling terminal */
#define vfork fork
-/* 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
-
/* Virtual addresses of pure and impure space can vary, as on Windows. */
#define VIRT_ADDR_VARIES
=== modified file 'src/s/darwin.h'
--- src/s/darwin.h 2011-08-09 22:13:11 +0000
+++ src/s/darwin.h 2011-11-08 16:29:11 +0000
@@ -145,6 +145,3 @@
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
=== modified file 'src/s/freebsd.h'
--- src/s/freebsd.h 2011-02-16 01:35:20 +0000
+++ src/s/freebsd.h 2011-11-08 16:29:11 +0000
@@ -58,6 +58,3 @@
/* 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
=== modified file 'src/s/gnu-linux.h'
--- src/s/gnu-linux.h 2011-09-09 01:06:52 +0000
+++ src/s/gnu-linux.h 2011-11-08 16:29:11 +0000
@@ -145,7 +145,6 @@
|| defined __arm__ || defined __powerpc__ || defined __amd64__ \
|| defined __ia64__ || defined __sh__
#define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
#ifdef __mc68000__
#define GC_LISP_OBJECT_ALIGNMENT 2
#endif
@@ -158,4 +157,6 @@
__builtin_ia64_bsp (), 0); \
} while (0)
#endif
+#else
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
#endif
=== modified file 'src/s/hpux10-20.h'
--- src/s/hpux10-20.h 2011-02-16 01:35:20 +0000
+++ src/s/hpux10-20.h 2011-11-08 16:29:11 +0000
@@ -101,6 +101,10 @@
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
+
/* Define VIRT_ADDR_VARIES if the virtual addresses of
pure and impure space as loaded can vary, and even their
relative order cannot be relied on.
=== modified file 'src/s/irix6-5.h'
--- src/s/irix6-5.h 2011-07-07 03:24:33 +0000
+++ src/s/irix6-5.h 2011-11-08 16:29:11 +0000
@@ -95,7 +95,6 @@
/* 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
=== modified file 'src/s/ms-w32.h'
--- src/s/ms-w32.h 2011-11-05 16:30:13 +0000
+++ src/s/ms-w32.h 2011-11-08 16:29:11 +0000
@@ -402,5 +402,8 @@
#define DebPrint(stuff)
#endif
+/* 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
/* ============================================================ */
=== modified file 'src/s/msdos.h'
--- src/s/msdos.h 2011-02-26 12:55:10 +0000
+++ src/s/msdos.h 2011-11-08 16:29:11 +0000
@@ -137,5 +137,3 @@
/* 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
-
=== modified file 'src/s/netbsd.h'
--- src/s/netbsd.h 2011-02-16 01:35:20 +0000
+++ src/s/netbsd.h 2011-11-08 16:29:11 +0000
@@ -38,6 +38,3 @@
/* 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
=== modified file 'src/s/sol2-6.h'
--- src/s/sol2-6.h 2011-04-16 22:06:00 +0000
+++ src/s/sol2-6.h 2011-11-08 16:29:11 +0000
@@ -59,4 +59,3 @@
}
#define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
=== modified file 'src/s/unixware.h'
--- src/s/unixware.h 2011-04-16 22:06:00 +0000
+++ src/s/unixware.h 2011-11-08 16:29:11 +0000
@@ -50,3 +50,7 @@
}
#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
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#9926
; Package
emacs
.
(Tue, 08 Nov 2011 17:26:02 GMT)
Full text and
rfc822 format available.
Message #29 received at 9926 <at> debbugs.gnu.org (full text, mbox):
> Date: Tue, 08 Nov 2011 08:44:21 -0800
> From: Paul Eggert <eggert <at> cs.ucla.edu>
> Cc: 9926 <at> debbugs.gnu.org
>
> --- src/s/ms-w32.h 2011-11-05 16:30:13 +0000
> +++ src/s/ms-w32.h 2011-11-08 16:29:11 +0000
> @@ -402,5 +402,8 @@
> #define DebPrint(stuff)
> #endif
>
> +/* 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
Given that nt/config.nt defines this:
/* Enable conservative stack marking for GC. */
#define GC_MARK_STACK 1
I wonder if the above change for ms-w32.h is TRT.
Reply sent
to
Paul Eggert <eggert <at> cs.ucla.edu>
:
You have taken responsibility.
(Tue, 08 Nov 2011 20:19:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
monnier <at> IRO.UMontreal.CA
:
bug acknowledged by developer.
(Tue, 08 Nov 2011 20:19:02 GMT)
Full text and
rfc822 format available.
Message #34 received at 9926-done <at> debbugs.gnu.org (full text, mbox):
On 11/08/11 09:09, Stefan Monnier wrote:
> So I'd rather use the OP's patch that only affects the Hurd.
Sounds good. I did that as bzr 106331
and am marking this bug as done.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#9926
; Package
emacs
.
(Tue, 08 Nov 2011 20:37:01 GMT)
Full text and
rfc822 format available.
Message #37 received at 9926 <at> debbugs.gnu.org (full text, mbox):
On 11/08/11 09:23, Eli Zaretskii wrote:
> I wonder if the above change for ms-w32.h is TRT.
Yes, Stefan wondered the same thing. I expect the answer is "no".
Here's a revised patch (intended for 24.2).
=== modified file 'src/ChangeLog'
--- src/ChangeLog 2011-11-08 20:15:17 +0000
+++ src/ChangeLog 2011-11-08 20:31:58 +0000
@@ -1,5 +1,17 @@
2011-11-08 Paul Eggert <eggert <at> cs.ucla.edu>
+ 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.
+
+2011-11-08 Paul Eggert <eggert <at> cs.ucla.edu>
+
* s/gnu.h (GC_MARK_STACK): Define to GC_MAKE_GCPROS_NOOPS (Bug#9926).
2011-11-08 Paul Eggert <eggert <at> cs.ucla.edu>
=== modified file 'src/lisp.h'
--- src/lisp.h 2011-11-07 17:04:01 +0000
+++ src/lisp.h 2011-11-08 20:31:58 +0000
@@ -2213,7 +2213,7 @@
#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. */
=== modified file 'src/s/aix4-2.h'
--- src/s/aix4-2.h 2011-07-07 01:32:56 +0000
+++ src/s/aix4-2.h 2011-11-08 20:31:58 +0000
@@ -75,3 +75,7 @@
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
=== modified file 'src/s/cygwin.h'
--- src/s/cygwin.h 2011-03-17 05:15:08 +0000
+++ src/s/cygwin.h 2011-11-08 20:31:58 +0000
@@ -85,12 +85,6 @@
change their controlling terminal */
#define vfork fork
-/* 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
-
/* Virtual addresses of pure and impure space can vary, as on Windows. */
#define VIRT_ADDR_VARIES
=== modified file 'src/s/darwin.h'
--- src/s/darwin.h 2011-08-09 22:13:11 +0000
+++ src/s/darwin.h 2011-11-08 20:31:58 +0000
@@ -145,6 +145,3 @@
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
=== modified file 'src/s/freebsd.h'
--- src/s/freebsd.h 2011-02-16 01:35:20 +0000
+++ src/s/freebsd.h 2011-11-08 20:31:58 +0000
@@ -58,6 +58,3 @@
/* 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
=== modified file 'src/s/gnu-linux.h'
--- src/s/gnu-linux.h 2011-09-09 01:06:52 +0000
+++ src/s/gnu-linux.h 2011-11-08 20:31:58 +0000
@@ -145,7 +145,6 @@
|| defined __arm__ || defined __powerpc__ || defined __amd64__ \
|| defined __ia64__ || defined __sh__
#define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
#ifdef __mc68000__
#define GC_LISP_OBJECT_ALIGNMENT 2
#endif
@@ -158,4 +157,6 @@
__builtin_ia64_bsp (), 0); \
} while (0)
#endif
+#else
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
#endif
=== modified file 'src/s/gnu.h'
--- src/s/gnu.h 2011-11-08 20:15:17 +0000
+++ src/s/gnu.h 2011-11-08 20:31:58 +0000
@@ -43,6 +43,3 @@
((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)
#endif /* !_IO_STDIO_H */
#endif /* emacs */
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack. */
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
=== modified file 'src/s/hpux10-20.h'
--- src/s/hpux10-20.h 2011-02-16 01:35:20 +0000
+++ src/s/hpux10-20.h 2011-11-08 20:31:58 +0000
@@ -101,6 +101,10 @@
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
+
/* Define VIRT_ADDR_VARIES if the virtual addresses of
pure and impure space as loaded can vary, and even their
relative order cannot be relied on.
=== modified file 'src/s/irix6-5.h'
--- src/s/irix6-5.h 2011-07-07 03:24:33 +0000
+++ src/s/irix6-5.h 2011-11-08 20:31:58 +0000
@@ -95,7 +95,6 @@
/* 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
=== modified file 'src/s/msdos.h'
--- src/s/msdos.h 2011-02-26 12:55:10 +0000
+++ src/s/msdos.h 2011-11-08 20:31:58 +0000
@@ -137,5 +137,3 @@
/* 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
-
=== modified file 'src/s/netbsd.h'
--- src/s/netbsd.h 2011-02-16 01:35:20 +0000
+++ src/s/netbsd.h 2011-11-08 20:31:58 +0000
@@ -38,6 +38,3 @@
/* 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
=== modified file 'src/s/sol2-6.h'
--- src/s/sol2-6.h 2011-04-16 22:06:00 +0000
+++ src/s/sol2-6.h 2011-11-08 20:31:58 +0000
@@ -59,4 +59,3 @@
}
#define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
=== modified file 'src/s/unixware.h'
--- src/s/unixware.h 2011-04-16 22:06:00 +0000
+++ src/s/unixware.h 2011-11-08 20:31:58 +0000
@@ -50,3 +50,7 @@
}
#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
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#9926
; Package
emacs
.
(Tue, 08 Nov 2011 20:59:01 GMT)
Full text and
rfc822 format available.
Message #40 received at 9926 <at> debbugs.gnu.org (full text, mbox):
> I don't see anything wrong with changing Emacs to use GC_MAKE_GCPROS_NOOPS
> on GNU/Hurd. If there's no objection I would like to install the change
> suggested by Stefan, which should have the same effect as patching gnu.h
> but results in cleaner code internally. Please see the patch below.
I'd rather keep the old default for now and change it in 24.2, only.
So I'd rather use the OP's patch that only affects the Hurd.
> === modified file 'src/s/ms-w32.h'
> --- src/s/ms-w32.h 2011-11-05 16:30:13 +0000
> +++ src/s/ms-w32.h 2011-11-08 16:29:11 +0000
> @@ -402,5 +402,8 @@
> #define DebPrint(stuff)
> #endif
> +/* 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
Really? This sounds wrong,
Stefan
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Wed, 07 Dec 2011 12:24:03 GMT)
Full text and
rfc822 format available.
This bug report was last modified 12 years and 154 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.