11.11.2014 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!