Design of CMU Common Lisp.pdf - Common Lisp.net
Design of CMU Common Lisp.pdf - Common Lisp.net
Design of CMU Common Lisp.pdf - Common Lisp.net
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
variables.<br />
Environment analysis emits cleanup code for local exits and markers for non-local exits.<br />
A non-local exit is a control transfer from one environment to another. In a non-local exit, we must close<br />
over the continuation that we transfer to so that the exiting function can find its way back. We indicate the need<br />
to close a continuation by placing the continuation structure in the closure and also pushing it on a list in the<br />
environment structure for the target <strong>of</strong> the exit. [### To be safe, we would treat the continuation as a set closure<br />
variable so that we could invalidate it when we leave the dynamic extent <strong>of</strong> the exit point. Transferring control<br />
to a meaningless stack pointer would be apt to cause horrible death.]<br />
Each local control transfer may require dynamic state such as special bindings to be undone. We represent<br />
cleanup actions by funny function calls in a new block linked in as an implicit MV-PROG1.<br />
34