Changes in / [180f249:65502d8]


Ignore:
Files:
11 added
18 deleted
21 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/andrew_beach_MMath/code/cond-catch.py

    r180f249 r65502d8  
    3232
    3333    end_time = thread_time_ns()
    34     print('Run-Time (s): {:.1f}'.format((end_time - start_time) / 1_000_000_000.))
     34    print('Run-Time (s) {:.1f}:'.format((end_time - start_time) / 1_000_000_000.))
    3535
    3636
  • doc/theses/andrew_beach_MMath/code/run.sh

    r180f249 r65502d8  
    11#!/usr/bin/env bash
    22
    3 readonly ALL_TESTS=(raise-{empty,detor,finally,other} try-{catch,finally} \
    4                         cond-match-{all,none} fixup-{empty,other})
     3readonly ALL_TESTS=(raise-{empty,detor,finally,other} try-{catch,finally} cond-match-{all,none} \
     4                    raise-{fixup-empty,fixup-other})
    55
    66gen-file-name() (
     
    1818)
    1919
     20#readonly N=${1:-5}
    2021readonly N=${1:-1}
    2122readonly OUT_FILE=$(gen-file-name ${2:-run-%-$N})
  • doc/theses/andrew_beach_MMath/code/test.sh

    r180f249 r65502d8  
    1313#   View the result from TEST in LANGUAGE stored in FILE.
    1414
    15 readonly MIL=000000
    16 # Various preset values used as arguments.
    17 readonly ITERS_1M=1$MIL
    18 readonly ITERS_10M=10$MIL
    19 readonly ITERS_100M=100$MIL
    20 readonly ITERS_1000M=1000$MIL
     15readonly ITERS_1M=1000000 # 1 000 000, one million
     16readonly ITERS_10M=10000000 # 10 000 000, ten million
     17readonly ITERS_100M=100000000 # 100 000 000, hundred million
     18readonly ITERS_1000M=1000000000 # 1 000 000 000, billion
    2119readonly STACK_HEIGHT=100
    2220
     
    3230        case "$1" in
    3331        *.cfa)
    34                 # A symbolic link/local copy can be used as an override.
    35                 cmd=./cfa
    36                 if [ ! -x $cmd ]; then
    37                         cmd=cfa
    38                 fi
    39                 mmake "${1%.cfa}" "$1" $cmd -DNDEBUG -nodebug -O3 "$1" -o "${1%.cfa}"
     32                # Requires a symbolic link.
     33                mmake "${1%.cfa}" "$1" cfa -DNDEBUG -nodebug -O3 "$1" -o "${1%.cfa}"
    4034                ;;
    4135        *.cpp)
     
    8983raise-empty)
    9084        CFAT="./throw-empty $ITERS_1M $STACK_HEIGHT"
    91         CFAR="./resume-empty $ITERS_1M $STACK_HEIGHT"
     85# see resume-fixup-empty-r      CFAR="./resume-empty $ITERS_1M $STACK_HEIGHT"
    9286        CPP="./throw-empty-cpp $ITERS_1M $STACK_HEIGHT"
    9387        JAVA="java ThrowEmpty $ITERS_1M $STACK_HEIGHT"
     
    9690raise-detor)
    9791        CFAT="./throw-detor $ITERS_1M $STACK_HEIGHT"
    98         CFAR="./resume-detor $ITERS_1M $STACK_HEIGHT"
     92# N/A   CFAR="./resume-detor $ITERS_1M $STACK_HEIGHT"
    9993        CPP="./throw-detor-cpp $ITERS_1M $STACK_HEIGHT"
    10094        JAVA=unsupported
     
    10397raise-finally)
    10498        CFAT="./throw-finally $ITERS_1M $STACK_HEIGHT"
    105         CFAR="./resume-finally $ITERS_1M $STACK_HEIGHT"
     99# N/A   CFAR="./resume-finally $ITERS_1M $STACK_HEIGHT"
    106100        CPP=unsupported
    107101        JAVA="java ThrowFinally $ITERS_1M $STACK_HEIGHT"
     
    110104raise-other)
    111105        CFAT="./throw-other $ITERS_1M $STACK_HEIGHT"
    112         CFAR="./resume-other $ITERS_1M $STACK_HEIGHT"
     106# N/A   CFAR="./resume-other $ITERS_1M $STACK_HEIGHT"
    113107        CPP="./throw-other-cpp $ITERS_1M $STACK_HEIGHT"
    114108        JAVA="java ThrowOther $ITERS_1M $STACK_HEIGHT"
     
    143137        PYTHON="./cond-catch.py $ITERS_10M 0"
    144138        ;;
    145 fixup-empty)
    146         CFAT="./fixup-empty-f $ITERS_10M $STACK_HEIGHT"
    147         CFAR="./fixup-empty-r $ITERS_10M $STACK_HEIGHT"
    148         CPP="./fixup-empty-cpp $ITERS_10M $STACK_HEIGHT"
    149         JAVA="java FixupEmpty $ITERS_10M $STACK_HEIGHT"
    150         PYTHON="./fixup-empty.py $ITERS_10M $STACK_HEIGHT"
     139raise-fixup-empty)
     140        CFAT="./resume-fixup-empty-f $ITERS_10M $STACK_HEIGHT"
     141        CFAR="./resume-fixup-empty-r $ITERS_10M $STACK_HEIGHT"
     142        CPP="./resume-fixup-empty-cpp $ITERS_10M $STACK_HEIGHT"
     143        JAVA="java ResumeFixupEmpty $ITERS_10M $STACK_HEIGHT"
     144        PYTHON="./resume-fixup-empty.py $ITERS_10M $STACK_HEIGHT"
    151145        ;;
    152 fixup-other)
    153         CFAT="./fixup-other-f $ITERS_10M $STACK_HEIGHT"
    154         CFAR="./fixup-other-r $ITERS_10M $STACK_HEIGHT"
    155         CPP="./fixup-other-cpp $ITERS_10M $STACK_HEIGHT"
    156         JAVA="java FixupOther $ITERS_10M $STACK_HEIGHT"
    157         PYTHON="./fixup-other.py $ITERS_10M $STACK_HEIGHT"
     146raise-fixup-other)
     147        CFAT="./resume-fixup-other-f $ITERS_10M $STACK_HEIGHT"
     148        CFAR="./resume-fixup-other-r $ITERS_10M $STACK_HEIGHT"
     149        CPP="./resume-fixup-other-cpp $ITERS_10M $STACK_HEIGHT"
     150        JAVA="java ResumeFixupOther $ITERS_10M $STACK_HEIGHT"
     151        PYTHON="./resume-fixup-other.py $ITERS_10M $STACK_HEIGHT"
    158152        ;;
    159153*)
  • doc/theses/andrew_beach_MMath/code/throw-empty.py

    r180f249 r65502d8  
    3333
    3434    end_time = thread_time_ns()
    35     print('Run-Time (s): {:.1f}'.format((end_time - start_time) / 1_000_000_000.))
     35    print('Run-Time (s) {:.1f}:'.format((end_time - start_time) / 1_000_000_000.))
    3636
    3737
  • doc/theses/andrew_beach_MMath/code/throw-finally.py

    r180f249 r65502d8  
    3636
    3737    end_time = thread_time_ns()
    38     print('Run-Time (s): {:.1f}'.format((end_time - start_time) / 1_000_000_000.))
     38    print('Run-Time (s) {:.1f}:'.format((end_time - start_time) / 1_000_000_000.))
    3939
    4040
  • doc/theses/andrew_beach_MMath/code/throw-other.py

    r180f249 r65502d8  
    4040
    4141    end_time = thread_time_ns()
    42     print('Run-Time (s): {:.1f}'.format((end_time - start_time) / 1_000_000_000.))
     42    print('Run-Time (s) {:.1f}:'.format((end_time - start_time) / 1_000_000_000.))
    4343
    4444
  • doc/theses/andrew_beach_MMath/code/throw-with.py

    r180f249 r65502d8  
    4343
    4444    end_time = thread_time_ns()
    45     print('Run-Time (s): {:.1f}'.format((end_time - start_time) / 1_000_000_000.))
     45    print('Run-Time (s) {:.1f}:'.format((end_time - start_time) / 1_000_000_000.))
    4646
    4747
  • doc/theses/andrew_beach_MMath/code/try-catch.py

    r180f249 r65502d8  
    2323
    2424    end_time = thread_time_ns()
    25     print('Run-Time (s): {:.1f}'.format((end_time - start_time) / 1_000_000_000.))
     25    print('Run-Time (s) {:.1f}:'.format((end_time - start_time) / 1_000_000_000.))
    2626
    2727
  • doc/theses/andrew_beach_MMath/code/try-finally.py

    r180f249 r65502d8  
    2222
    2323    end_time = thread_time_ns()
    24     print('Run-Time (s): {:.1f}'.format((end_time - start_time) / 1_000_000_000.))
     24    print('Run-Time (s) {:.1f}:'.format((end_time - start_time) / 1_000_000_000.))
    2525
    2626
  • doc/theses/andrew_beach_MMath/existing.tex

    r180f249 r65502d8  
    224224The global definition of @do_once@ is ignored, however if quadruple took a
    225225@double@ argument, then the global definition would be used instead as it
    226 would then be a better match.\cite{Moss19}
     226would then be a better match.
     227\todo{cite Aaron's thesis (maybe)}
    227228
    228229To avoid typing long lists of assertions, constraints can be collected into
  • doc/theses/andrew_beach_MMath/features.tex

    r180f249 r65502d8  
    162162type a child of that type and part of the same tree. The parent may itself
    163163be a child or a root type and may have any number of existing children.
    164 
    165 % OK, for some reason the b and t positioning options are reversed here.
    166 \begin{minipage}[b]{0.6\textwidth}
    167164\begin{cfa}
    168165trait child_a(T) virtual(root_type) {}
     
    170167trait child_b(T) virtual(root_type) {}
    171168\end{cfa}
    172 \end{minipage}
    173 \begin{minipage}{0.4\textwidth}
    174 \begin{center}
    175 \input{virtual-tree}
    176 \end{center}
    177 \end{minipage}
     169\todo{Update the diagram in vtable.fig to show the new type tree.}
    178170
    179171Every virtual type also has a list of virtual members and a unique id,
     
    507499throwResume EXPRESSION;
    508500\end{cfa}
    509 % The new keywords are currently ``experimental" and not used in this work.
     501\todo{Decide on a final set of keywords and use them everywhere.}
    510502It works much the same way as the termination raise, except the
    511503type must satisfy the \snake{is_resumption_exception} that uses the
     
    552544and run, its try block (the guarded statements) and every try statement
    553545searched before it are still on the stack. There presence can lead to
    554 the recursive resumption problem.\cite{Buhr00a}
    555 % Other possible citation is MacLaren77, but the form is different.
     546the recursive resumption problem.
     547\todo{Is there a citation for the recursive resumption problem?}
    556548
    557549The recursive resumption problem is any situation where a resumption handler
  • doc/theses/andrew_beach_MMath/future.tex

    r180f249 r65502d8  
    2121capability, programmers will want to use it. Once fixed, this capability should
    2222result in little or no change in the exception system but simplify usage.
    23 \item
    24 The @copy@ function in the exception virtual table is an adapter to address
    25 some limitations in the \CFA copy constructor. If the copy constructor is
    26 improved it can be used directly without the adapter.
    2723\item
    2824Termination handlers cannot use local control-flow transfers, \eg by @break@,
     
    6157type is a child of another. This check precisely captures many of the
    6258current ad-hoc correctness requirements.
    63 
    64 Other features of the virtual system could also remove some of the
    65 special cases around exception virtual tables, such as the generation
    66 of the @msg@ function, could be removed.
    6759
    6860The full virtual system might also include other improvement like associated
  • doc/theses/andrew_beach_MMath/implement.tex

    r180f249 r65502d8  
    9999
    100100Type information is constructed as follows:
    101 \begin{enumerate}[nosep]
     101\begin{enumerate}
    102102\item
    103103Use the type's name to generate a name for the type information structure,
     
    123123including different instances of the same polymorphic type.
    124124\end{enumerate}
     125\todo{The list is making me realize, some of this isn't ordered.}
    125126
    126127Writing that code manually, with helper macros for the early name mangling,
     
    175176below.
    176177
    177 The layout always comes in three parts (see \autoref{f:VirtualTableLayout}).
     178The layout always comes in three parts.
     179\todo{Add labels to the virtual table layout figure.}
    178180The first section is just the type id at the head of the table. It is always
    179181there to ensure that it can be found even when the accessing code does not
     
    188190
    189191\begin{figure}
    190 \begin{center}
    191192\input{vtable-layout}
    192 \end{center}
    193193\caption{Virtual Table Layout}
    194194\label{f:VirtualTableLayout}
     195\todo*{Improve the Virtual Table Layout diagram.}
    195196\end{figure}
    196197
     
    673674\newsavebox{\stackBox}
    674675\begin{lrbox}{\codeBox}
    675 \begin{cfa}
     676\begin{lstlisting}[language=CFA,{moredelim=**[is][\color{red}]{@}{@}}]
    676677unsigned num_exceptions = 0;
    677678void throws() {
     
    692693    throws();
    693694}
    694 \end{cfa}
     695\end{lstlisting}
    695696\end{lrbox}
    696697
    697698\begin{lrbox}{\stackBox}
    698699\begin{lstlisting}
    699 | finally block (Example)
    700 | try block
     700| try-finally
     701| try-catch (Example)
    701702throws()
    702 | finally block (Example)
    703 | try block
     703| try-finally
     704| try-catch (Example)
    704705throws()
    705 | finally block (Example)
    706 | try block
     706| try-finally
     707| try-catch (Example)
    707708throws()
    708709main()
     
    717718\label{f:MultipleExceptions}
    718719\end{figure}
     720\todo*{Work on multiple exceptions code sample.}
    719721
    720722All exceptions are stored in nodes, which are then linked together in lists
     
    795797\autoref{f:TerminationTransformation} shows the pattern used to transform
    796798a \CFA try statement with catch clauses into the appropriate C functions.
     799\todo{Explain the Termination Transformation figure.}
    797800
    798801\begin{figure}
     
    852855\caption{Termination Transformation}
    853856\label{f:TerminationTransformation}
     857\todo*{Improve (compress?) Termination Transformations.}
    854858\end{figure}
    855859
     
    890894
    891895\autoref{f:ResumptionTransformation} shows the pattern used to transform
    892 a \CFA try statement with catchResume clauses into the appropriate
    893 C functions.
     896a \CFA try statement with catch clauses into the appropriate C functions.
     897\todo{Explain the Resumption Transformation figure.}
    894898
    895899\begin{figure}
     
    932936\caption{Resumption Transformation}
    933937\label{f:ResumptionTransformation}
     938\todo*{Improve (compress?) Resumption Transformations.}
    934939\end{figure}
    935940
     
    959964\caption{Resumption Marking}
    960965\label{f:ResumptionMarking}
     966\todo*{Label Resumption Marking to aid clarity.}
    961967\end{figure}
    962968
  • doc/theses/andrew_beach_MMath/intro.tex

    r180f249 r65502d8  
    125125with papers on the subject dating back 70s.\cite{Goodenough75}
    126126Early exceptions were often treated as signals, which carried no information
    127 except their identity.
    128 Ada originally used this system\cite{Ada}, but now allows for a string
    129 message as a payload\cite{Ada12}.
     127except their identity. Ada still uses this system.\todo{cite Ada}
    130128
    131129The modern flag-ship for termination exceptions is \Cpp,
    132130which added them in its first major wave of non-object-orientated features
    133 in 1990.\cite{CppHistory}
     131in 1990.
     132\todo{cite https://en.cppreference.com/w/cpp/language/history}
    134133Many EHMs have special exception types,
    135134however \Cpp has the ability to use any type as an exception.
     
    147146impossible to actually handle any errors.
    148147
    149 Java was the next popular language to use exceptions.\cite{Java8}
     148Java was the next popular language to use exceptions. \todo{cite Java}
    150149Its exception system largely reflects that of \Cpp, except that requires
    151150you throw a child type of \code{Java}{java.lang.Throwable}
     
    182181% http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/parc/techReports/
    183182%   CSL-79-3_Mesa_Language_Manual_Version_5.0.pdf
    184 Mesa is one programming language that did.\cite{Mesa} Experience with Mesa
     183Mesa is one programming language that did.\todo{cite Mesa} Experience with Mesa
    185184is quoted as being one of the reasons resumptions were not
    186185included in the \Cpp standard.
     
    211210languages, replaced by ``panic".
    212211In Rust, a panic is just a program level abort that may be implemented by
    213 unwinding the stack like in termination exception
    214 handling.\cite{RustPanicMacro}\cite{RustPanicModule}
     212unwinding the stack like in termination exception handling.\todo{cite Rust}
     213% https://doc.rust-lang.org/std/panic/fn.catch_unwind.html
    215214Go's panic through is very similar to a termination, except it only supports
    216215a catch-all by calling \code{Go}{recover()}, simplifying the interface at
    217 the cost of flexibility.\cite{Go:2021}
     216the cost of flexibility.\todo{cite Go}
    218217
    219218%\subsection
     
    292291This difference is less important in higher-level scripting languages,
    293292where using exception for other tasks is more common.
    294 An iconic example is Python's
    295 \code{Python}{StopIteration}\cite{PythonExceptions} exception that
     293An iconic example is Python's \code{Python}{StopIteration} exception that
    296294is thrown by an iterator to indicate that it is exhausted.
    297295When paired with Python's iterator-based for-loop this will be thrown every
    298 time the end of the loop is reached.\cite{PythonForLoop}
     296time the end of the loop is reached.
     297\todo{Cite Python StopIteration and for-each loop.}
     298% https://docs.python.org/3/library/exceptions.html#StopIteration
  • doc/theses/andrew_beach_MMath/performance.tex

    r180f249 r65502d8  
    7474three results are discarded and the remaining five values are averaged.
    7575The test are run with the latest (still pre-release) \CFA compiler,
    76 using gcc-10 10.3.0 as a backend.
    77 g++-10 10.3.0 is used for \Cpp.
     76using gcc-10 as a backend.
     77g++-10 is used for \Cpp.
    7878Java tests are complied and run with version 11.0.11.
    79 Python used version 3.8.10.
     79Python used version 3.8.
    8080The machines used to run the tests are:
     81\todo{Get patch versions for python, gcc and g++.}
    8182\begin{itemize}[nosep]
    8283\item ARM 2280 Kunpeng 920 48-core 2$\times$socket
     
    311312For example, there are a few cases where Python out-performs
    312313\CFA, \Cpp and Java.
    313 % To be exact, the Match All and Match None cases.
     314\todo{Make sure there are still cases where Python wins.}
    314315The most likely explanation is that, since exceptions
    315316are rarely considered to be the common case, the more optimized languages
     
    350351finally clauses seem to avoid the spike that run-time destructors have.
    351352Possibly some optimization removes the cost of changing contexts.
     353\todo{OK, I think the finally clause may have been optimized out.}
    352354
    353355\item[Other Traversal]
     
    360362but they could avoid the spike by not having the same kind of overhead for
    361363switching to the check's context.
     364\todo{Could revisit Other Traversal, after Finally Traversal.}
    362365
    363366\item[Cross Handler]
  • doc/theses/andrew_beach_MMath/resumption-marking.fig

    r180f249 r65502d8  
    32322 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    3333        1 1 1.00 60.00 120.00
     34         2205 1620 1845 1620
     352 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     36        1 1 1.00 60.00 120.00
     37         3735 2340 3375 2340
     382 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     39        1 1 1.00 60.00 120.00
     40         5445 945 5085 945
     412 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     42        1 1 1.00 60.00 120.00
     43         7065 1620 6705 1620
     442 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     45        1 1 1.00 60.00 120.00
    3446         1665 1755 1665 2205
    35472 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     
    4860        1 1 1.00 60.00 120.00
    4961         6525 2475 6525 2925
    50 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    51         1 1 1.00 60.00 120.00
    52          1260 1620 1485 1620
    53 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    54         1 1 1.00 60.00 120.00
    55          1980 1440 1755 1440
    56 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    57         1 1 1.00 60.00 120.00
    58          2790 2340 3015 2340
    59 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    60         1 1 1.00 60.00 120.00
    61          3600 1620 3375 1620
    62 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    63         1 1 1.00 60.00 120.00
    64          4500 945 4725 945
    65 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    66         1 1 1.00 60.00 120.00
    67          5265 765 5040 765
    68 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    69         1 1 1.00 60.00 120.00
    70          6120 1620 6345 1620
    71 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    72         1 1 1.00 60.00 120.00
    73          6840 1440 6615 1440
    74 4 1 0 50 -1 0 12 0.0000 0 135 1170 1665 3375 Initial State\001
    75 4 1 0 50 -1 0 12 0.0000 0 135 1170 3195 3375 Found Handler\001
    76 4 1 0 50 -1 0 12 0.0000 0 165 1530 6570 3375 Handling Complete\001
    77 4 2 0 50 -1 0 12 0.0000 0 135 720 1485 2385 handlers\001
    78 4 1 0 50 -1 0 12 0.0000 0 135 900 4905 3375 Handler in\001
    79 4 1 0 50 -1 0 12 0.0000 0 165 810 4905 3600 Try block\001
    80 4 0 0 50 -1 0 12 0.0000 0 135 360 855 1665 head\001
    81 4 0 0 50 -1 0 12 0.0000 4 120 810 2025 1485 execution\001
    82 4 0 0 50 -1 0 12 0.0000 0 135 360 2385 2385 head\001
    83 4 0 0 50 -1 0 12 0.0000 4 120 810 3645 1665 execution\001
    84 4 0 0 50 -1 0 12 0.0000 0 135 360 4095 990 head\001
    85 4 0 0 50 -1 0 12 0.0000 4 120 810 5310 810 execution\001
    86 4 0 0 50 -1 0 12 0.0000 0 135 360 5715 1665 head\001
    87 4 0 0 50 -1 0 12 0.0000 4 120 810 6885 1485 execution\001
     624 1 0 50 -1 0 12 0.0000 0 135 945 1665 3375 Initial State\001
     634 1 0 50 -1 0 12 0.0000 0 135 1215 3195 3375 Found Handler\001
     644 1 0 50 -1 0 12 0.0000 0 180 1605 6570 3375 Handling Complete\001
     654 0 0 50 -1 0 12 0.0000 0 135 390 3825 2385 head\001
     664 0 0 50 -1 0 12 0.0000 0 135 390 5535 990 head\001
     674 0 0 50 -1 0 12 0.0000 0 135 390 7155 1665 head\001
     684 2 0 50 -1 0 12 0.0000 0 135 690 1485 2385 handlers\001
     694 1 0 50 -1 0 12 0.0000 0 135 855 4905 3375 Handler in\001
     704 1 0 50 -1 0 12 0.0000 0 180 795 4905 3600 Try block\001
     714 0 0 50 -1 0 12 0.0000 0 135 390 2295 1665 head\001
  • doc/theses/andrew_beach_MMath/uw-ethesis-frontpgs.tex

    r180f249 r65502d8  
    129129\begin{center}\textbf{Abstract}\end{center}
    130130
    131 The \CFA (Cforall) programming language is an evolutionary refinement of
    132 the C programming language, adding modern programming features without
    133 changing the programming paradigms of C.
    134 One of these modern programming features is more powerful error handling
    135 through the addition of an exception handling mechanism (EHM).
    136 
    137 This thesis covers the design and implementation of the \CFA EHM,
    138 along with a review of the other required \CFA features.
    139 The EHM includes common features of termination exception handling and
    140 similar support for resumption exception handling.
    141 The design of both has been adapted to utilize other tools \CFA provides,
    142 as well as fit with the assertion based interfaces of the language.
    143 
    144 The EHM has been implemented into the \CFA compiler and run-time environment.
    145 Although it has not yet been optimized, performance testing has shown it has
    146 comparable performance to other EHM's,
    147 which is sufficient for use in current \CFA programs.
     131This is the abstract.
    148132
    149133\cleardoublepage
     
    154138\begin{center}\textbf{Acknowledgements}\end{center}
    155139
    156 I would like to thank all the people who made this thesis possible.
    157 (I'm waiting until who is involved is finalized.)
    158 
     140I would like to thank all the little people who made this thesis possible.
    159141\cleardoublepage
    160142
  • doc/theses/andrew_beach_MMath/uw-ethesis.bib

    r180f249 r65502d8  
    11% Bibliography of key references for "LaTeX for Thesis and Large Documents"
    22% For use with BibTeX
    3 % The online reference does not seem to be supported here.
    43
    54@misc{Dice21,
     
    1615    howpublished= {\href{https://github.com/cforall/ExceptionBenchmarks_SPE20}{https://\-github.com/\-cforall/\-ExceptionBenchmarks\_SPE20}},
    1716}
    18 
    19 % Could not get `#the-for-statement` to work.
    20 @misc{PythonForLoop,
    21     author={Python Software Foundation},
    22     key={Python Compound Statements},
    23     howpublished={\href{https://docs.python.org/3/reference/compound_stmts.html}{https://\-docs.python.org/\-3/\-reference/\-compound\_stmts.html}},
    24     addendum={Accessed 2021-08-30},
    25 }
    26 
    27 % Again, I would like this to have `#StopIteration`.
    28 @misc{PythonExceptions,
    29     author={Python Software Foundation},
    30     key={Python Exceptions},
    31     howpublished={\href{https://docs.python.org/3/library/exceptions.html}{https://\-docs.python.org/\-3/\-library/\-exceptions.html}},
    32     addendum={Accessed 2021-08-30},
    33 }
    34 
    35 @misc{CppHistory,
    36     author={C++ Community},
    37     key={Cpp Reference History},
    38     howpublished={\href{https://en.cppreference.com/w/cpp/language/history}{https://\-en.cppreference.com/\-w/\-cpp/\-language/\-history}},
    39     addendum={Accessed 2021-08-30},
    40 }
    41 
    42 @misc{RustPanicMacro,
    43     author={The Rust Team},
    44     key={Rust Panic Macro},
    45     howpublished={\href{https://doc.rust-lang.org/std/panic/index.html}{https://\-doc.rust-lang.org/\-std/\-panic/\-index.html}},
    46     addendum={Accessed 2021-08-31},
    47 }
    48 
    49 @misc{RustPanicModule,
    50     author={The Rust Team},
    51     key={Rust Panic Module},
    52     howpublished={\href{https://doc.rust-lang.org/std/panic/index.html}{https://\-doc.rust-lang.org/\-std/\-panic/\-index.html}},
    53     addendum={Accessed 2021-08-31},
    54 }
    55 
    56 @manual{Go:2021,
    57     keywords={Go programming language},
    58     author={Robert Griesemer and Rob Pike and Ken Thompson},
    59     title={{Go} Programming Language},
    60     organization={Google},
    61     year=2021,
    62     note={\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
    63     addendum={Accessed 2021-08-31},
    64 }
  • doc/theses/andrew_beach_MMath/vtable-layout.fig

    r180f249 r65502d8  
    88-2
    991200 2
     102 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 1
     11         1620 1665
    10122 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
    1113         3510 1890 3645 1755
     
    14162 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
    1517         3645 1305 3645 1755
    16 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
    17          2115 1935 2250 1935
    18 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4
    19          2250 1170 2115 1170 2115 2475 2250 2475
    20 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
    21          2250 1350 2115 1350
    22184 0 0 50 -1 0 12 0.0000 4 165 630 2295 1305 type_id\001
    23194 0 0 50 -1 0 12 0.0000 4 165 1170 2295 1500 parent_field0\001
  • libcfa/src/Makefile.am

    r180f249 r65502d8  
    4848        math.hfa \
    4949        time_t.hfa \
    50         bits/algorithm.hfa \
    5150        bits/align.hfa \
    5251        bits/containers.hfa \
     
    6059        containers/array.hfa \
    6160        concurrency/iofwd.hfa \
     61        concurrency/mutex_stmt.hfa \
    6262        containers/list.hfa \
    6363        containers/queueLockFree.hfa \
     
    7878        memory.hfa \
    7979        parseargs.hfa \
    80         parseconfig.hfa \
    8180        rational.hfa \
    8281        stdlib.hfa \
     
    9291libsrc = ${inst_headers_src} ${inst_headers_src:.hfa=.cfa} \
    9392        assert.cfa \
     93        bits/algorithm.hfa \
    9494        bits/debug.cfa \
    9595        exception.c \
     
    107107        concurrency/invoke.h \
    108108        concurrency/future.hfa \
    109         concurrency/kernel/fwd.hfa \
    110         concurrency/mutex_stmt.hfa
     109        concurrency/kernel/fwd.hfa
    111110
    112111inst_thread_headers_src = \
  • tests/Makefile.am

    r180f249 r65502d8  
    8282        concurrent/clib_tls.c \
    8383        exceptions/with-threads.hfa \
    84         exceptions/except-io.hfa \
    85         unified_locking/mutex_test.hfa
     84        exceptions/except-io.hfa
    8685
    8786dist-hook:
Note: See TracChangeset for help on using the changeset viewer.