diff options
author | Robin Templeton <[email protected]> | 2014-09-26 04:20:26 -0400 |
---|---|---|
committer | Robin Templeton <[email protected]> | 2015-04-20 00:29:04 -0400 |
commit | bc203f9e4311ddb2c6ea12c14ae2dc2f463591c1 (patch) | |
tree | fdb456d8c7e513b8e44b2ddb01604750cbe740fc /src | |
parent | 792b3d23233b65eebe5ceeacc635175372de5fca (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'.
Diffstat (limited to 'src')
-rw-r--r-- | src/emacs.c | 2 | ||||
-rw-r--r-- | src/eval.c | 6 |
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; |