Related articles |
---|
[5 earlier articles] |
Re: Exception Handling journeyman@compilerguru.com (journeyman) (2002-08-04) |
Re: Exception Handling nmm1@cus.cam.ac.uk (Nick Maclaren) (2002-08-10) |
Re: Exception Handling marcov@toad.stack.nl (Marco van de Voort) (2002-08-10) |
Re: Exception Handling max1@mbank.com.ua (Maxim Reznik) (2002-08-10) |
Re: Exception Handling fjh@cs.mu.OZ.AU (Fergus Henderson) (2002-08-14) |
Exception Handling tschirre@cs.curtin.edu.au (Bernhard Tschirren) (1998-09-13) |
Re: Exception Handling mrs@kithrup.com (1998-09-18) |
Re: Exception Handling enikitin@apk.net (1998-09-18) |
Re: Exception Handling landauer@apple.com (1998-09-18) |
Re: Exception Handling mmc@oss.dk (Morten Christensen) (1998-09-26) |
From: | mrs@kithrup.com (Mike Stump) |
Newsgroups: | comp.compilers |
Date: | 18 Sep 1998 23:03:08 -0400 |
Organization: | Kithrup Enterprises, Ltd. |
References: | 98-09-049 |
Keywords: | errors |
Bernhard Tschirren <tschirre@cs.curtin.edu.au> wrote:
>Could somebody please explain "zero runtime overhead" exception handling.
>Im only familiar with the traditional setjmp() / longjmp() methods.
>
>[I thought the code was instrumented with a table that the exception
>handler consulted to figure out which exception handler to use. -John]
Right, thought that may be too short for a newcomer to understand.
Imagine a table that is index by PC ranges that contains a handler to
jump to, should the PC be within that range. When compiling code, you
arrange for all code blocks to be bracketed by handlers. For a
function body, its handler unwinds the function call. When selecting
a handler, you pick the innermost handler (the tightest range).
Advantage, no inline code to manage EH variable stack, or
activations/deactivations. It is managed solely by the PC contents.
If you want to see this in action, get g++ (egcs.cygnus.com), and
compile something up. -fsjlj-exceptions will select the setjmp style
cost you will recognize, and -fno-sjlj-exceptions will select the zero
overhead scheme.
There are tons more details and various optimizations that can be
done, but you get the idea.
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.