Changes in / [180f249:65502d8]
- Files:
-
- 11 added
- 18 deleted
- 21 edited
-
doc/theses/andrew_beach_MMath/code/FixupEmpty.java (deleted)
-
doc/theses/andrew_beach_MMath/code/FixupOther.java (deleted)
-
doc/theses/andrew_beach_MMath/code/ResumeFixupEmpty.java (added)
-
doc/theses/andrew_beach_MMath/code/ResumeFixupOther.java (added)
-
doc/theses/andrew_beach_MMath/code/cond-catch.py (modified) (1 diff)
-
doc/theses/andrew_beach_MMath/code/fixup-empty-f.cfa (deleted)
-
doc/theses/andrew_beach_MMath/code/fixup-empty-r.cfa (deleted)
-
doc/theses/andrew_beach_MMath/code/fixup-empty.cpp (deleted)
-
doc/theses/andrew_beach_MMath/code/fixup-empty.py (deleted)
-
doc/theses/andrew_beach_MMath/code/fixup-other-f.cfa (deleted)
-
doc/theses/andrew_beach_MMath/code/fixup-other-r.cfa (deleted)
-
doc/theses/andrew_beach_MMath/code/fixup-other.cpp (deleted)
-
doc/theses/andrew_beach_MMath/code/fixup-other.py (deleted)
-
doc/theses/andrew_beach_MMath/code/resume-fixup-empty-f.cfa (added)
-
doc/theses/andrew_beach_MMath/code/resume-fixup-empty-r.cfa (added)
-
doc/theses/andrew_beach_MMath/code/resume-fixup-empty.cpp (added)
-
doc/theses/andrew_beach_MMath/code/resume-fixup-empty.py (added)
-
doc/theses/andrew_beach_MMath/code/resume-fixup-other-f.cfa (added)
-
doc/theses/andrew_beach_MMath/code/resume-fixup-other-r.cfa (added)
-
doc/theses/andrew_beach_MMath/code/resume-fixup-other.cpp (added)
-
doc/theses/andrew_beach_MMath/code/resume-fixup-other.py (added)
-
doc/theses/andrew_beach_MMath/code/run.sh (modified) (2 diffs)
-
doc/theses/andrew_beach_MMath/code/test.sh (modified) (7 diffs)
-
doc/theses/andrew_beach_MMath/code/throw-empty.py (modified) (1 diff)
-
doc/theses/andrew_beach_MMath/code/throw-finally.py (modified) (1 diff)
-
doc/theses/andrew_beach_MMath/code/throw-other.py (modified) (1 diff)
-
doc/theses/andrew_beach_MMath/code/throw-with.py (modified) (1 diff)
-
doc/theses/andrew_beach_MMath/code/try-catch.py (modified) (1 diff)
-
doc/theses/andrew_beach_MMath/code/try-finally.py (modified) (1 diff)
-
doc/theses/andrew_beach_MMath/existing.tex (modified) (1 diff)
-
doc/theses/andrew_beach_MMath/features.tex (modified) (4 diffs)
-
doc/theses/andrew_beach_MMath/future.tex (modified) (2 diffs)
-
doc/theses/andrew_beach_MMath/implement.tex (modified) (12 diffs)
-
doc/theses/andrew_beach_MMath/intro.tex (modified) (5 diffs)
-
doc/theses/andrew_beach_MMath/performance.tex (modified) (4 diffs)
-
doc/theses/andrew_beach_MMath/resumption-marking.fig (modified) (2 diffs)
-
doc/theses/andrew_beach_MMath/uw-ethesis-frontpgs.tex (modified) (2 diffs)
-
doc/theses/andrew_beach_MMath/uw-ethesis.bib (modified) (2 diffs)
-
doc/theses/andrew_beach_MMath/virtual-tree.fig (deleted)
-
doc/theses/andrew_beach_MMath/vtable-layout.fig (modified) (2 diffs)
-
doc/theses/andrew_beach_MMath/vtable.fig (added)
-
libcfa/src/Makefile.am (modified) (5 diffs)
-
libcfa/src/parseconfig.cfa (deleted)
-
libcfa/src/parseconfig.hfa (deleted)
-
tests/.expect/parseconfig.txt (deleted)
-
tests/.in/parseconfig-all.txt (deleted)
-
tests/.in/parseconfig-errors.txt (deleted)
-
tests/.in/parseconfig-missing.txt (deleted)
-
tests/Makefile.am (modified) (1 diff)
-
tests/parseconfig.cfa (deleted)
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/andrew_beach_MMath/code/cond-catch.py
r180f249 r65502d8 32 32 33 33 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.)) 35 35 36 36 -
doc/theses/andrew_beach_MMath/code/run.sh
r180f249 r65502d8 1 1 #!/usr/bin/env bash 2 2 3 readonly ALL_TESTS=(raise-{empty,detor,finally,other} try-{catch,finally} \4 cond-match-{all,none} fixup-{empty,other})3 readonly ALL_TESTS=(raise-{empty,detor,finally,other} try-{catch,finally} cond-match-{all,none} \ 4 raise-{fixup-empty,fixup-other}) 5 5 6 6 gen-file-name() ( … … 18 18 ) 19 19 20 #readonly N=${1:-5} 20 21 readonly N=${1:-1} 21 22 readonly OUT_FILE=$(gen-file-name ${2:-run-%-$N}) -
doc/theses/andrew_beach_MMath/code/test.sh
r180f249 r65502d8 13 13 # View the result from TEST in LANGUAGE stored in FILE. 14 14 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 15 readonly ITERS_1M=1000000 # 1 000 000, one million 16 readonly ITERS_10M=10000000 # 10 000 000, ten million 17 readonly ITERS_100M=100000000 # 100 000 000, hundred million 18 readonly ITERS_1000M=1000000000 # 1 000 000 000, billion 21 19 readonly STACK_HEIGHT=100 22 20 … … 32 30 case "$1" in 33 31 *.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}" 40 34 ;; 41 35 *.cpp) … … 89 83 raise-empty) 90 84 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" 92 86 CPP="./throw-empty-cpp $ITERS_1M $STACK_HEIGHT" 93 87 JAVA="java ThrowEmpty $ITERS_1M $STACK_HEIGHT" … … 96 90 raise-detor) 97 91 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" 99 93 CPP="./throw-detor-cpp $ITERS_1M $STACK_HEIGHT" 100 94 JAVA=unsupported … … 103 97 raise-finally) 104 98 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" 106 100 CPP=unsupported 107 101 JAVA="java ThrowFinally $ITERS_1M $STACK_HEIGHT" … … 110 104 raise-other) 111 105 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" 113 107 CPP="./throw-other-cpp $ITERS_1M $STACK_HEIGHT" 114 108 JAVA="java ThrowOther $ITERS_1M $STACK_HEIGHT" … … 143 137 PYTHON="./cond-catch.py $ITERS_10M 0" 144 138 ;; 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"139 raise-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" 151 145 ;; 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"146 raise-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" 158 152 ;; 159 153 *) -
doc/theses/andrew_beach_MMath/code/throw-empty.py
r180f249 r65502d8 33 33 34 34 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.)) 36 36 37 37 -
doc/theses/andrew_beach_MMath/code/throw-finally.py
r180f249 r65502d8 36 36 37 37 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.)) 39 39 40 40 -
doc/theses/andrew_beach_MMath/code/throw-other.py
r180f249 r65502d8 40 40 41 41 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.)) 43 43 44 44 -
doc/theses/andrew_beach_MMath/code/throw-with.py
r180f249 r65502d8 43 43 44 44 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.)) 46 46 47 47 -
doc/theses/andrew_beach_MMath/code/try-catch.py
r180f249 r65502d8 23 23 24 24 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.)) 26 26 27 27 -
doc/theses/andrew_beach_MMath/code/try-finally.py
r180f249 r65502d8 22 22 23 23 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.)) 25 25 26 26 -
doc/theses/andrew_beach_MMath/existing.tex
r180f249 r65502d8 224 224 The global definition of @do_once@ is ignored, however if quadruple took a 225 225 @double@ argument, then the global definition would be used instead as it 226 would then be a better match.\cite{Moss19} 226 would then be a better match. 227 \todo{cite Aaron's thesis (maybe)} 227 228 228 229 To avoid typing long lists of assertions, constraints can be collected into -
doc/theses/andrew_beach_MMath/features.tex
r180f249 r65502d8 162 162 type a child of that type and part of the same tree. The parent may itself 163 163 be 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}167 164 \begin{cfa} 168 165 trait child_a(T) virtual(root_type) {} … … 170 167 trait child_b(T) virtual(root_type) {} 171 168 \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.} 178 170 179 171 Every virtual type also has a list of virtual members and a unique id, … … 507 499 throwResume EXPRESSION; 508 500 \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.} 510 502 It works much the same way as the termination raise, except the 511 503 type must satisfy the \snake{is_resumption_exception} that uses the … … 552 544 and run, its try block (the guarded statements) and every try statement 553 545 searched 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. 546 the recursive resumption problem. 547 \todo{Is there a citation for the recursive resumption problem?} 556 548 557 549 The recursive resumption problem is any situation where a resumption handler -
doc/theses/andrew_beach_MMath/future.tex
r180f249 r65502d8 21 21 capability, programmers will want to use it. Once fixed, this capability should 22 22 result in little or no change in the exception system but simplify usage. 23 \item24 The @copy@ function in the exception virtual table is an adapter to address25 some limitations in the \CFA copy constructor. If the copy constructor is26 improved it can be used directly without the adapter.27 23 \item 28 24 Termination handlers cannot use local control-flow transfers, \eg by @break@, … … 61 57 type is a child of another. This check precisely captures many of the 62 58 current ad-hoc correctness requirements. 63 64 Other features of the virtual system could also remove some of the65 special cases around exception virtual tables, such as the generation66 of the @msg@ function, could be removed.67 59 68 60 The full virtual system might also include other improvement like associated -
doc/theses/andrew_beach_MMath/implement.tex
r180f249 r65502d8 99 99 100 100 Type information is constructed as follows: 101 \begin{enumerate} [nosep]101 \begin{enumerate} 102 102 \item 103 103 Use the type's name to generate a name for the type information structure, … … 123 123 including different instances of the same polymorphic type. 124 124 \end{enumerate} 125 \todo{The list is making me realize, some of this isn't ordered.} 125 126 126 127 Writing that code manually, with helper macros for the early name mangling, … … 175 176 below. 176 177 177 The layout always comes in three parts (see \autoref{f:VirtualTableLayout}). 178 The layout always comes in three parts. 179 \todo{Add labels to the virtual table layout figure.} 178 180 The first section is just the type id at the head of the table. It is always 179 181 there to ensure that it can be found even when the accessing code does not … … 188 190 189 191 \begin{figure} 190 \begin{center}191 192 \input{vtable-layout} 192 \end{center}193 193 \caption{Virtual Table Layout} 194 194 \label{f:VirtualTableLayout} 195 \todo*{Improve the Virtual Table Layout diagram.} 195 196 \end{figure} 196 197 … … 673 674 \newsavebox{\stackBox} 674 675 \begin{lrbox}{\codeBox} 675 \begin{ cfa}676 \begin{lstlisting}[language=CFA,{moredelim=**[is][\color{red}]{@}{@}}] 676 677 unsigned num_exceptions = 0; 677 678 void throws() { … … 692 693 throws(); 693 694 } 694 \end{ cfa}695 \end{lstlisting} 695 696 \end{lrbox} 696 697 697 698 \begin{lrbox}{\stackBox} 698 699 \begin{lstlisting} 699 | finally block (Example)700 | try block700 | try-finally 701 | try-catch (Example) 701 702 throws() 702 | finally block (Example)703 | try block703 | try-finally 704 | try-catch (Example) 704 705 throws() 705 | finally block (Example)706 | try block706 | try-finally 707 | try-catch (Example) 707 708 throws() 708 709 main() … … 717 718 \label{f:MultipleExceptions} 718 719 \end{figure} 720 \todo*{Work on multiple exceptions code sample.} 719 721 720 722 All exceptions are stored in nodes, which are then linked together in lists … … 795 797 \autoref{f:TerminationTransformation} shows the pattern used to transform 796 798 a \CFA try statement with catch clauses into the appropriate C functions. 799 \todo{Explain the Termination Transformation figure.} 797 800 798 801 \begin{figure} … … 852 855 \caption{Termination Transformation} 853 856 \label{f:TerminationTransformation} 857 \todo*{Improve (compress?) Termination Transformations.} 854 858 \end{figure} 855 859 … … 890 894 891 895 \autoref{f:ResumptionTransformation} shows the pattern used to transform 892 a \CFA try statement with catch Resume clauses into the appropriate893 C functions. 896 a \CFA try statement with catch clauses into the appropriate C functions. 897 \todo{Explain the Resumption Transformation figure.} 894 898 895 899 \begin{figure} … … 932 936 \caption{Resumption Transformation} 933 937 \label{f:ResumptionTransformation} 938 \todo*{Improve (compress?) Resumption Transformations.} 934 939 \end{figure} 935 940 … … 959 964 \caption{Resumption Marking} 960 965 \label{f:ResumptionMarking} 966 \todo*{Label Resumption Marking to aid clarity.} 961 967 \end{figure} 962 968 -
doc/theses/andrew_beach_MMath/intro.tex
r180f249 r65502d8 125 125 with papers on the subject dating back 70s.\cite{Goodenough75} 126 126 Early 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}. 127 except their identity. Ada still uses this system.\todo{cite Ada} 130 128 131 129 The modern flag-ship for termination exceptions is \Cpp, 132 130 which added them in its first major wave of non-object-orientated features 133 in 1990.\cite{CppHistory} 131 in 1990. 132 \todo{cite https://en.cppreference.com/w/cpp/language/history} 134 133 Many EHMs have special exception types, 135 134 however \Cpp has the ability to use any type as an exception. … … 147 146 impossible to actually handle any errors. 148 147 149 Java was the next popular language to use exceptions. \cite{Java8}148 Java was the next popular language to use exceptions. \todo{cite Java} 150 149 Its exception system largely reflects that of \Cpp, except that requires 151 150 you throw a child type of \code{Java}{java.lang.Throwable} … … 182 181 % http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/parc/techReports/ 183 182 % CSL-79-3_Mesa_Language_Manual_Version_5.0.pdf 184 Mesa is one programming language that did.\ cite{Mesa} Experience with Mesa183 Mesa is one programming language that did.\todo{cite Mesa} Experience with Mesa 185 184 is quoted as being one of the reasons resumptions were not 186 185 included in the \Cpp standard. … … 211 210 languages, replaced by ``panic". 212 211 In 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} 212 unwinding the stack like in termination exception handling.\todo{cite Rust} 213 % https://doc.rust-lang.org/std/panic/fn.catch_unwind.html 215 214 Go's panic through is very similar to a termination, except it only supports 216 215 a catch-all by calling \code{Go}{recover()}, simplifying the interface at 217 the cost of flexibility.\ cite{Go:2021}216 the cost of flexibility.\todo{cite Go} 218 217 219 218 %\subsection … … 292 291 This difference is less important in higher-level scripting languages, 293 292 where using exception for other tasks is more common. 294 An iconic example is Python's 295 \code{Python}{StopIteration}\cite{PythonExceptions} exception that 293 An iconic example is Python's \code{Python}{StopIteration} exception that 296 294 is thrown by an iterator to indicate that it is exhausted. 297 295 When paired with Python's iterator-based for-loop this will be thrown every 298 time the end of the loop is reached.\cite{PythonForLoop} 296 time 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 74 74 three results are discarded and the remaining five values are averaged. 75 75 The test are run with the latest (still pre-release) \CFA compiler, 76 using gcc-10 10.3.0as a backend.77 g++-10 10.3.0is used for \Cpp.76 using gcc-10 as a backend. 77 g++-10 is used for \Cpp. 78 78 Java tests are complied and run with version 11.0.11. 79 Python used version 3.8. 10.79 Python used version 3.8. 80 80 The machines used to run the tests are: 81 \todo{Get patch versions for python, gcc and g++.} 81 82 \begin{itemize}[nosep] 82 83 \item ARM 2280 Kunpeng 920 48-core 2$\times$socket … … 311 312 For example, there are a few cases where Python out-performs 312 313 \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.} 314 315 The most likely explanation is that, since exceptions 315 316 are rarely considered to be the common case, the more optimized languages … … 350 351 finally clauses seem to avoid the spike that run-time destructors have. 351 352 Possibly some optimization removes the cost of changing contexts. 353 \todo{OK, I think the finally clause may have been optimized out.} 352 354 353 355 \item[Other Traversal] … … 360 362 but they could avoid the spike by not having the same kind of overhead for 361 363 switching to the check's context. 364 \todo{Could revisit Other Traversal, after Finally Traversal.} 362 365 363 366 \item[Cross Handler] -
doc/theses/andrew_beach_MMath/resumption-marking.fig
r180f249 r65502d8 32 32 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 33 33 1 1 1.00 60.00 120.00 34 2205 1620 1845 1620 35 2 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 38 2 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 41 2 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 44 2 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 34 46 1665 1755 1665 2205 35 47 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 … … 48 60 1 1 1.00 60.00 120.00 49 61 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 62 4 1 0 50 -1 0 12 0.0000 0 135 945 1665 3375 Initial State\001 63 4 1 0 50 -1 0 12 0.0000 0 135 1215 3195 3375 Found Handler\001 64 4 1 0 50 -1 0 12 0.0000 0 180 1605 6570 3375 Handling Complete\001 65 4 0 0 50 -1 0 12 0.0000 0 135 390 3825 2385 head\001 66 4 0 0 50 -1 0 12 0.0000 0 135 390 5535 990 head\001 67 4 0 0 50 -1 0 12 0.0000 0 135 390 7155 1665 head\001 68 4 2 0 50 -1 0 12 0.0000 0 135 690 1485 2385 handlers\001 69 4 1 0 50 -1 0 12 0.0000 0 135 855 4905 3375 Handler in\001 70 4 1 0 50 -1 0 12 0.0000 0 180 795 4905 3600 Try block\001 71 4 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 129 129 \begin{center}\textbf{Abstract}\end{center} 130 130 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. 131 This is the abstract. 148 132 149 133 \cleardoublepage … … 154 138 \begin{center}\textbf{Acknowledgements}\end{center} 155 139 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 140 I would like to thank all the little people who made this thesis possible. 159 141 \cleardoublepage 160 142 -
doc/theses/andrew_beach_MMath/uw-ethesis.bib
r180f249 r65502d8 1 1 % Bibliography of key references for "LaTeX for Thesis and Large Documents" 2 2 % For use with BibTeX 3 % The online reference does not seem to be supported here.4 3 5 4 @misc{Dice21, … … 16 15 howpublished= {\href{https://github.com/cforall/ExceptionBenchmarks_SPE20}{https://\-github.com/\-cforall/\-ExceptionBenchmarks\_SPE20}}, 17 16 } 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 8 8 -2 9 9 1200 2 10 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 1 11 1620 1665 10 12 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 11 13 3510 1890 3645 1755 … … 14 16 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 15 17 3645 1305 3645 1755 16 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 217 2115 1935 2250 193518 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 419 2250 1170 2115 1170 2115 2475 2250 247520 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 221 2250 1350 2115 135022 18 4 0 0 50 -1 0 12 0.0000 4 165 630 2295 1305 type_id\001 23 19 4 0 0 50 -1 0 12 0.0000 4 165 1170 2295 1500 parent_field0\001 -
libcfa/src/Makefile.am
r180f249 r65502d8 48 48 math.hfa \ 49 49 time_t.hfa \ 50 bits/algorithm.hfa \51 50 bits/align.hfa \ 52 51 bits/containers.hfa \ … … 60 59 containers/array.hfa \ 61 60 concurrency/iofwd.hfa \ 61 concurrency/mutex_stmt.hfa \ 62 62 containers/list.hfa \ 63 63 containers/queueLockFree.hfa \ … … 78 78 memory.hfa \ 79 79 parseargs.hfa \ 80 parseconfig.hfa \81 80 rational.hfa \ 82 81 stdlib.hfa \ … … 92 91 libsrc = ${inst_headers_src} ${inst_headers_src:.hfa=.cfa} \ 93 92 assert.cfa \ 93 bits/algorithm.hfa \ 94 94 bits/debug.cfa \ 95 95 exception.c \ … … 107 107 concurrency/invoke.h \ 108 108 concurrency/future.hfa \ 109 concurrency/kernel/fwd.hfa \ 110 concurrency/mutex_stmt.hfa 109 concurrency/kernel/fwd.hfa 111 110 112 111 inst_thread_headers_src = \ -
tests/Makefile.am
r180f249 r65502d8 82 82 concurrent/clib_tls.c \ 83 83 exceptions/with-threads.hfa \ 84 exceptions/except-io.hfa \ 85 unified_locking/mutex_test.hfa 84 exceptions/except-io.hfa 86 85 87 86 dist-hook:
Note:
See TracChangeset
for help on using the changeset viewer.