A Single Intermediate Language That Supports Multiple Implementations of Exceptions (Abstract)

Norman Ramsey and Simon Peyton Jones

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. Our approach clarifies the design space of exception-handling techniques, and it allows a single optimizer to handle a variety of implementation techniques. 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 PostScript (302K). (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 C-- page.