12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- % -*- Mode: TeX -*-
- %% Exit Extents
- % This text was originally duplicated in each of GO, RETURN-FROM,
- % and THROW. I thought it would be less redundant to centralize it here.
- % --sjl 7 Mar 92
- \issue{EXIT-EXTENT:MINIMAL}
- When a transfer of control is initiated by \specref{go},
- \specref{return-from}, or \specref{throw}
- the following events occur in order to accomplish the transfer of control.
- Note that for \specref{go},
- the \term{exit point} is the \term{form} within the \specref{tagbody}
- that is being executed at the time the \specref{go} is performed;
- for \specref{return-from},
- the \term{exit point} is the corresponding
- \specref{block} \term{form};
- and for \specref{throw},
- the \term{exit point} is the corresponding
- \specref{catch} \term{form}.
- \beginlist
- \itemitem{1.}
- Intervening \term{exit points} are ``abandoned''
- (\ie their \term{extent} ends
- and it is no longer valid to attempt to transfer control through them).
- \itemitem{2.}
- The cleanup clauses of any intervening \specref{unwind-protect} clauses
- are evaluated.
-
- \itemitem{3.}
- % added condition handlers and restarts -- sjl 7 Mar 92
- Intervening dynamic \term{bindings} of \declref{special} variables,
- \term{catch tags}, \term{condition handlers}, and \term{restarts}
- are undone.
-
- \itemitem{4.}
- The \term{extent} of the \term{exit point} being invoked ends,
- and control is passed to the target.
- \endlist
-
- The extent of an exit being ``abandoned'' because it is being passed over
- ends as soon as the transfer of control is initiated. That is,
- event 1 occurs at the beginning of the initiation of the transfer of
- control.
- The consequences are undefined if an attempt is made to transfer control
- to an \term{exit point} whose \term{dynamic extent} has ended.
-
- %Moon had me add the part about "interleaved" -kmp 13-Feb-92
- Events 2 and 3 are actually performed interleaved, in the order
- corresponding to the reverse order in which they were established.
- The effect of this is that the cleanup clauses of an \specref{unwind-protect}
- see the same dynamic \term{bindings}
- of variables and \term{catch tags} as were
- visible when the \specref{unwind-protect} was entered.
-
- Event 4 occurs at the end of the transfer of control.
-
- \endissue{EXIT-EXTENT:MINIMAL}
|