aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Templeton <[email protected]>2014-09-26 04:20:26 -0400
committerRobin Templeton <[email protected]>2015-04-20 00:29:04 -0400
commitbc203f9e4311ddb2c6ea12c14ae2dc2f463591c1 (patch)
treefdb456d8c7e513b8e44b2ddb01604750cbe740fc
parent792b3d23233b65eebe5ceeacc635175372de5fca (diff)
disable GC_all_interior_pointers
* src/emacs.c (main): Don't enable `GC_all_interior_pointers'. * src/eval.c (specpdl_base): New variable. (init_eval_once, grow_specpdl): Save the dummy entry preceding the specpdl in `specpdl_base'.
-rw-r--r--src/emacs.c2
-rw-r--r--src/eval.c6
2 files changed, 6 insertions, 2 deletions
diff --git a/src/emacs.c b/src/emacs.c
index 319f5efef4..4777044215 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -718,8 +718,6 @@ static int main2 (void *, int, char **);
int
main (int argc, char **argv)
{
- /* Override Guile's libgc configuration. */
- xputenv ("GC_ALL_INTERIOR_POINTERS=1");
scm_boot_guile (argc, argv, main2, NULL);
}
diff --git a/src/eval.c b/src/eval.c
index 5edfa79c92..8e60e8e30f 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -73,6 +73,10 @@ ptrdiff_t specpdl_size;
union specbinding *specpdl;
+/* Pointer to the dummy entry before the specpdl. */
+
+union specbinding *specpdl_base;
+
/* Pointer to first unused element in specpdl. */
union specbinding *specpdl_ptr;
@@ -172,6 +176,7 @@ init_eval_once (void)
{
enum { size = 50 };
union specbinding *pdlvec = xmalloc ((size + 1) * sizeof *specpdl);
+ specpdl_base = pdlvec;
specpdl_size = size;
specpdl = specpdl_ptr = pdlvec + 1;
/* Don't forget to update docs (lispref node "Local Variables"). */
@@ -1460,6 +1465,7 @@ grow_specpdl (void)
Qnil);
}
pdlvec = xpalloc (pdlvec, &pdlvecsize, 1, max_size + 1, sizeof *specpdl);
+ specpdl_base = pdlvec;
specpdl = pdlvec + 1;
specpdl_size = pdlvecsize - 1;
specpdl_ptr = specpdl + count;