Ignore:
Timestamp:
Jan 29, 2021, 8:23:52 AM (9 months ago)
Author:
Peter A. Buhr <pabuhr@…>
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
Added
Removed
  • doc/theses/andrew_beach_MMath/features.tex

    r4dcd5ea r7eb6eb5  
    6262internally for exception handling. The only user-level feature is the virtual
    6363cast, which is the same as the \CC \lstinline[language=C++]|dynamic_cast|.
     64\label{p:VirtualCast}
    6465\begin{cfa}
    6566(virtual TYPE)EXPRESSION
     
    8990promises @exceptT@ is a virtual type and a child of the base exception-type.
    9091
    91 {\color{blue} PAB: I do not understand this paragraph.}
     92\PAB{I do not understand this paragraph.}
    9293One odd thing about @get_exception_vtable@ is that it should always be a
    9394constant function, returning the same value regardless of its argument.  A
     
    102103
    103104\section{Raise}
    104 \CFA provides two kinds of exception raise: termination (see
    105 \VRef{s:Termination}) and resumption (see \VRef{s:Resumption}), which are
     105\CFA provides two kinds of exception raise: termination
     106\see{\VRef{s:Termination}} and resumption \see{\VRef{s:Resumption}}, which are
    106107specified with the following traits.
    107108\begin{cfa}
     
    129130parenthesized list of polymorphic arguments. These macros do the name mangling
    130131to 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''?}
    132133
    133134\subsection{Termination}
     
    253254current point on the stack because new try statements may have been pushed by
    254255the 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 already
     256the point of the current handler, the search skips\label{p:searchskip} the stack frames already
    256257searched by the first resume and continues after the try statement. The default
    257258handler always continues from default handler associated with the point where
     
    291292continue searching the stack frames after the try statement. However, the
    292293current 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-raise
     294reresume \see{\VRef{s:Reraise}}. Hence, the try statement catches the re-raise
    294295again and does another re-raise \emph{ad infinitum}, which is confusing and
    295296difficult to debug. The \CFA resumption search-pattern skips the try statement
     
    377378\begin{description}
    378379\item[Main Stack:]
    379 
    380380The main stack is the one used by the program main at the start of execution,
    381381and is the only stack in a sequential program.  Hence, when cancellation is
     
    401401which exception has priority, the original or new exception? No matter which
    402402exception 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 not
    404 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 they are easier to forget about.
     403destroy the context required for the other. \PAB{I do not understand the
     404following sentences.} This loss of information can happen with join but as the
     405thread destructor is always run when the stack is being unwound and one
     406termination/cancellation is already active. Also since they are implicit they
     407are easier to forget about.
    408408
    409409\item[Coroutine Stack:] A coroutine stack is created for a @coroutine@ object
Note: See TracChangeset for help on using the changeset viewer.