A Single Intermediate Language
That Supports Multiple Implementations of Exceptions
We present mechanisms that enable our compiler-target
language, C--, to express four of the best known techniques for
implementing exceptions, all within a single, uniform framework.
We define the mechanisms precisely, using a formal operational semantics.
We also show that exceptions need not require
special treatment in the optimizer; by introducing extra dataflow
edges, we make standard optimization techniques work even on programs
that use exceptions.
clarifies the design space of exception-handling techniques, and
it allows a single optimizer to handle a variety of implementation
Our ultimate goal is to allow a source-language compiler
the freedom to choose its exception-handling policy, while encapsulating
the (architecture-dependent) mechanisms and their optimization in an
implementation of C-- that
can be used by compilers for many source languages.
The paper appeared in the ACM SIGPLAN '00 Conference on Programming Language Design and
Implementation (PLDI), in SIGPLAN Notices 35(5):285--298.
A reprint is available in
(The ACM proceedings format supports US Letter size only.)
The slides and audio
from the PLDI talk are also available.
Related work appears on the