1.0.45.13: physenvanal: Treat all functions without XEPs as being D-X.
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Fri, 21 Jan 2011 16:40:53 +0000 (16:40 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Fri, 21 Jan 2011 16:40:53 +0000 (16:40 +0000)
commit3930f31e885a51d72369cec5eaa8bb360aa134ee
tree48e060292d427b2af84c663d136c5dca6dc93529
parent64082e73d44c69781edf5a910d3ea0ce2346b6c2
1.0.45.13: physenvanal: Treat all functions without XEPs as being D-X.

  * In order for a function to be returned or passed as a parameter,
it must have an XEP.

  * Functions without XEPs, therefore, can only be called directly
from within their lexical scope.  They are, therefore,
dynamic-extent.

  * But wait, you say, they could be called from a closure that is
not dynamic-extent, which clearly shows such an analysis to be false.

  * It turns out that this doesn't matter, because the non-dynamic-
extent closure also has to close over the variables passed to the
supposedly-dynamic-extent closure, and that will cause explicit
value-cells to be allocated anyway.

  * So, it's a bit of an abuse to say that the functions have dynamic
extent, but it does no harm (and quite a bit of good) to treat them
as if they do.
src/compiler/physenvanal.lisp
version.lisp-expr