| [e8a7ca2] | 1 | \chapter{Introduction}
|
|---|
| 2 |
|
|---|
| 3 | % Talk about Cforall and exceptions generally.
|
|---|
| 4 | This thesis goes over the design and implementation of the exception handling
|
|---|
| 5 | mechanism (EHM) of
|
|---|
| 6 | \CFA (pernounced sea-for-all, can also be written Cforall or CFA).
|
|---|
| 7 | Exception handling provides dynamic inter-function control flow. Although
|
|---|
| 8 | a powerful feature they tend to be expensive to use so they are often limited
|
|---|
| 9 | to unusual or ``exceptional" cases.
|
|---|
| 10 | The classic example of this is error handling, exceptions can be used to
|
|---|
| 11 | remove error handling logic from the main execution path and paying most of
|
|---|
| 12 | the cost only when the error actually occurs.
|
|---|
| 13 |
|
|---|
| 14 | % Overview of exceptions in Cforall.
|
|---|
| 15 | The \CFA EHM implements all of the common exception features (or an
|
|---|
| 16 | equivalent) found in most other EHMs and adds some features of its own.
|
|---|
| 17 | The design of all the features had to be adapted to \CFA's feature set as
|
|---|
| 18 | some of the underlying tools used to implement and express exception handling
|
|---|
| 19 | in other languages are absent in \CFA.
|
|---|
| 20 | Still the resulting syntax resembles that of other languages:
|
|---|
| 21 | \begin{cfa}
|
|---|
| 22 | try {
|
|---|
| 23 | ...
|
|---|
| 24 | T * object = malloc(request_size);
|
|---|
| 25 | if (!object) {
|
|---|
| 26 | throw OutOfMemory{fixed_allocation, request_size};
|
|---|
| 27 | }
|
|---|
| 28 | ...
|
|---|
| 29 | } catch (OutOfMemory * error) {
|
|---|
| 30 | ...
|
|---|
| 31 | }
|
|---|
| 32 | \end{cfa}
|
|---|
| 33 |
|
|---|
| 34 | % A note that yes, that was a very fast overview.
|
|---|
| 35 | All the design and implementation of all of \CFA's EHM's features are
|
|---|
| 36 | described in detail later in this thesis, whether they are a common feature
|
|---|
| 37 | or one unique to \CFA.
|
|---|
| 38 |
|
|---|
| 39 | % The current state of the project and what it contributes.
|
|---|
| 40 | All of these features have been added to the \CFA implemenation, along with
|
|---|
| 41 | a suite of test cases.
|
|---|
| 42 | The implementation techniques are generally applicable in other programming
|
|---|
| 43 | languages and much of the design is as well, although occationally
|
|---|
| 44 | replacements for some of \CFA's more unusual feature would have to be found.
|
|---|