diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2013-07-19 10:20:36 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2013-07-19 10:20:36 +0200 |
commit | a796824f378f3c809ea0678a962d62f28c256075 (patch) | |
tree | e24eb47d1de86bde2011e7f04385f69127753704 | |
parent | 11522cc08df31d492c307ae207e7c9ee0f62d8c0 (diff) |
Never allocate environment objects on the stack.
We still allocate the actual data vector on the stack sometimes.
-rw-r--r-- | sb-eval2.lisp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sb-eval2.lisp b/sb-eval2.lisp index f2ff15b..62bd3a7 100644 --- a/sb-eval2.lisp +++ b/sb-eval2.lisp @@ -40,7 +40,11 @@ (,data% (make-array (list ,size%))) (,var (%make-environment :parent ,parent :data ,data%))) (declare (type (mod #.(1+ +stack-max+)) ,size%) - (dynamic-extent ,var) + ;; we must not allocate environment objects on the + ;; stack unless we can be sure that all child + ;; environments will also be allocated on the stack, + ;; but we can't really know that. + ;(dynamic-extent ,var) (dynamic-extent ,data%)) ,@body))) |