# Changeset 7eb6eb5 for doc/theses/andrew_beach_MMath/features.tex

Ignore:
Timestamp:
Jan 29, 2021, 8:23:52 AM (9 months ago)
Branches:
arm-eh, jacob/cs343-translation, master, new-ast-unique-expr
Children:
5669d0b
Parents:
4dcd5ea
Message:

complete first proofread of Andrew's thesis

File:
1 edited

### Legend:

Unmodified
 r4dcd5ea internally for exception handling. The only user-level feature is the virtual cast, which is the same as the \CC \lstinline[language=C++]|dynamic_cast|. \label{p:VirtualCast} \begin{cfa} (virtual TYPE)EXPRESSION promises @exceptT@ is a virtual type and a child of the base exception-type. {\color{blue} PAB: I do not understand this paragraph.} \PAB{I do not understand this paragraph.} One odd thing about @get_exception_vtable@ is that it should always be a constant function, returning the same value regardless of its argument.  A \section{Raise} \CFA provides two kinds of exception raise: termination (see \VRef{s:Termination}) and resumption (see \VRef{s:Resumption}), which are \CFA provides two kinds of exception raise: termination \see{\VRef{s:Termination}} and resumption \see{\VRef{s:Resumption}}, which are specified with the following traits. \begin{cfa} parenthesized list of polymorphic arguments. These macros do the name mangling to get the virtual-table name and provide the arguments to both sides {\color{blue}(PAB: What's a side''?)} \PAB{What's a side''?} \subsection{Termination} current point on the stack because new try statements may have been pushed by the handler or functions called from the handler. If there is no match back to the point of the current handler, the search skips the stack frames already the point of the current handler, the search skips\label{p:searchskip} the stack frames already searched by the first resume and continues after the try statement. The default handler always continues from default handler associated with the point where continue searching the stack frames after the try statement. However, the current try statement is still on the stack below the handler issuing the reresume (see \VRef{s:Reraise}). Hence, the try statement catches the re-raise reresume \see{\VRef{s:Reraise}}. Hence, the try statement catches the re-raise again and does another re-raise \emph{ad infinitum}, which is confusing and difficult to debug. The \CFA resumption search-pattern skips the try statement \begin{description} \item[Main Stack:] The main stack is the one used by the program main at the start of execution, and is the only stack in a sequential program.  Hence, when cancellation is which exception has priority, the original or new exception? No matter which exception is selected, it is possible for the selected one to disrupt or destroy the context required for the other. {\color{blue} PAB: I do not understand the following sentences.} This loss of information can happen with join but as the thread destructor is always run when the stack is being unwound and one termination/cancellation is already active. Also since they are implicit they are easier to forget about. destroy the context required for the other. \PAB{I do not understand the following sentences.} This loss of information can happen with join but as the thread destructor is always run when the stack is being unwound and one termination/cancellation is already active. Also since they are implicit they are easier to forget about. \item[Coroutine Stack:] A coroutine stack is created for a @coroutine@ object