summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2013-07-19 10:20:36 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2013-07-19 10:20:36 +0200
commita796824f378f3c809ea0678a962d62f28c256075 (patch)
treee24eb47d1de86bde2011e7f04385f69127753704
parent11522cc08df31d492c307ae207e7c9ee0f62d8c0 (diff)
Never allocate environment objects on the stack.
We still allocate the actual data vector on the stack sometimes.
-rw-r--r--sb-eval2.lisp6
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)))