Changeset 7eb6eb5 for doc/theses/andrew_beach_MMath/features.tex
- Timestamp:
- Jan 29, 2021, 8:23:52 AM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 5669d0b
- Parents:
- 4dcd5ea
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/andrew_beach_MMath/features.tex
r4dcd5ea r7eb6eb5 62 62 internally for exception handling. The only user-level feature is the virtual 63 63 cast, which is the same as the \CC \lstinline[language=C++]|dynamic_cast|. 64 \label{p:VirtualCast} 64 65 \begin{cfa} 65 66 (virtual TYPE)EXPRESSION … … 89 90 promises @exceptT@ is a virtual type and a child of the base exception-type. 90 91 91 {\color{blue} PAB:I do not understand this paragraph.}92 \PAB{I do not understand this paragraph.} 92 93 One odd thing about @get_exception_vtable@ is that it should always be a 93 94 constant function, returning the same value regardless of its argument. A … … 102 103 103 104 \section{Raise} 104 \CFA provides two kinds of exception raise: termination (see105 \ VRef{s:Termination}) and resumption (see \VRef{s:Resumption}), which are105 \CFA provides two kinds of exception raise: termination 106 \see{\VRef{s:Termination}} and resumption \see{\VRef{s:Resumption}}, which are 106 107 specified with the following traits. 107 108 \begin{cfa} … … 129 130 parenthesized list of polymorphic arguments. These macros do the name mangling 130 131 to get the virtual-table name and provide the arguments to both sides 131 {\color{blue}(PAB: What's a ``side''?)}132 \PAB{What's a ``side''?} 132 133 133 134 \subsection{Termination} … … 253 254 current point on the stack because new try statements may have been pushed by 254 255 the handler or functions called from the handler. If there is no match back to 255 the point of the current handler, the search skips the stack frames already256 the point of the current handler, the search skips\label{p:searchskip} the stack frames already 256 257 searched by the first resume and continues after the try statement. The default 257 258 handler always continues from default handler associated with the point where … … 291 292 continue searching the stack frames after the try statement. However, the 292 293 current try statement is still on the stack below the handler issuing the 293 reresume (see \VRef{s:Reraise}). Hence, the try statement catches the re-raise294 reresume \see{\VRef{s:Reraise}}. Hence, the try statement catches the re-raise 294 295 again and does another re-raise \emph{ad infinitum}, which is confusing and 295 296 difficult to debug. The \CFA resumption search-pattern skips the try statement … … 377 378 \begin{description} 378 379 \item[Main Stack:] 379 380 380 The main stack is the one used by the program main at the start of execution, 381 381 and is the only stack in a sequential program. Hence, when cancellation is … … 401 401 which exception has priority, the original or new exception? No matter which 402 402 exception is selected, it is possible for the selected one to disrupt or 403 destroy the context required for the other. {\color{blue} PAB: I do not404 understand the following sentences.} This loss of information can happen with 405 join but as the thread destructor is always run when the stack is being unwound 406 and one termination/cancellation is already active. Also since they are 407 implicit theyare easier to forget about.403 destroy the context required for the other. \PAB{I do not understand the 404 following sentences.} This loss of information can happen with join but as the 405 thread destructor is always run when the stack is being unwound and one 406 termination/cancellation is already active. Also since they are implicit they 407 are easier to forget about. 408 408 409 409 \item[Coroutine Stack:] A coroutine stack is created for a @coroutine@ object
Note:
See TracChangeset
for help on using the changeset viewer.