# Changeset df24d37

Ignore:
Timestamp:
Apr 26, 2021, 4:37:36 PM (3 months ago)
Branches:
arm-eh, jacob/cs343-translation, master
Children:
edc6ea2
Parents:
5456537
Message:

Andrew MMath: Switch from common.tex to cfalab.sty. Still work to do but it is almost everything I had before.

Location:
doc/theses/andrew_beach_MMath
Files:
6 edited

Unmodified
Removed

• ## doc/theses/andrew_beach_MMath/features.tex

 r5456537 \subparagraph{Raise} The raise is the starting point for exception handling. It marks the beginning of exception handling by \newterm{raising} an excepion, which passes it to of exception handling by raising an excepion, which passes it to the EHM. Both traits ensure a pair of types are an exception type and its virtual table and defines one of the two default handlers. The default handlers are used as fallbacks and are discussed in detail in \VRef{s:ExceptionHandling}. as fallbacks and are discussed in detail in \vref{s:ExceptionHandling}. However, all three of these traits can be tricky to use directly. for particular exception type. The global default termination handler performs a cancellation \see{\VRef{s:Cancellation}} on the current stack with the copied exception. (see \vref{s:Cancellation}) on the current stack with the copied exception. \subsection{Resumption} \subsubsection{Resumption Marking} \label{s:ResumptionMarking} A key difference between resumption and termination is that resumption does not unwind the stack. A side effect that is that when a handler is matched
• ## doc/theses/andrew_beach_MMath/future.tex

 r5456537 \section{Zero-Cost Try} \CFA does not have zero-cost try-statements because the compiler generates C code rather than assembler code \see{\VPageref{p:zero-cost}}. When the compiler code rather than assembler code (see \vpageref{p:zero-cost}). When the compiler does create its own assembly (or LLVM byte-code), then zero-cost try-statements are possible. The downside of zero-cost try-statements is the LSDA complexity,
• ## doc/theses/andrew_beach_MMath/implement.tex

 r5456537 % Virtual table rules. Virtual tables, the pointer to them and the cast. While the \CFA virtual system currently has only one public feature, virtual cast \see{\VPageref{p:VirtualCast}}, substantial structure is required to support it, and provide features for exception handling and the standard library. cast (see the virtual cast feature \vpageref{p:VirtualCast}), substantial structure is required to support it, and provide features for exception handling and the standard library. \subsection{Virtual Type} \subsection{libunwind Usage} Libunwind, accessed through @unwind.h@ on most platforms, is a C library that provides \CC-style stack-unwinding. Its operation is divided into two phases: provides \Cpp-style stack-unwinding. Its operation is divided into two phases: search and cleanup. The dynamic target search -- phase 1 -- is used to scan the stack and decide where unwinding should stop (but no unwinding occurs). The @_UA_FORCE_UNWIND@ specifies a forced unwind call. Forced unwind only performs the cleanup phase and uses a different means to decide when to stop \see{\VRef{s:ForcedUnwind}}. (see \vref{s:ForcedUnwind}). \end{enumerate} Termination exceptions use libunwind heavily because it matches the intended use from \CC exceptions closely. The main complication for \CFA is that the use from \Cpp exceptions closely. The main complication for \CFA is that the compiler generates C code, making it very difficult to generate the assembly to form the LSDA for try blocks or destructors. % Recursive Resumption Stuff: Search skipping \see{\VPageref{p:searchskip}}, which ignores parts of the stack Search skipping (see \vpageref{s:ResumptionMarking}), which ignores parts of the stack already examined, is accomplished by updating the front of the list as the search continues. Before the handler at a node is called the head of the list Cancellation also uses libunwind to do its stack traversal and unwinding, however it uses a different primary function @_Unwind_ForcedUnwind@. Details of its interface can be found in the \VRef{s:ForcedUnwind}. of its interface can be found in the \vref{s:ForcedUnwind}. The first step of cancellation is to find the cancelled stack and its type:
• ## doc/theses/andrew_beach_MMath/uw-ethesis.tex

Note: See TracChangeset for help on using the changeset viewer.