[LLVMdev] An alternate implementation of exceptions
cedric.venet at laposte.net
Fri Sep 4 06:44:48 PDT 2009
> Thanks for looking at my stuff and I can only say that I am HAPPY that
> this method is already known. I have not seen it implemented in any of
> the compilers I use, but the most important thing for me is just that the
> method is so great -- about four to five times faster than the traditional
> stack unwind method (try expands to setjmp, throw expands to longjmp) --
> that I wanted to make sure that somebody somewhere knew about the method.
C++ exception implementation are optimized for the case where no
exception is throw (opposite to what is done in python or maybe in
java). Because in C++ exception are exceptionnal and should not be
thrown during a normal execution of a program (use return code in this
case). At least this is what all the C++ guru preach (that I know of).
I don't think your implementation can be faster than current zero cost
exception model used currently (where metainformation is added somewhere
for unwinding, but no other code is needed) in the case of no exception
throw. And like I said, in the other case we don't care much about
speed, since it is an exceptional occurrence.
This is just the way I see it, but at least for C++, the current
solution seems more appropriate. obviously, for language like python
which use exception to exit loop, this isn't the same thinks at all.
just my 2cents
More information about the llvm-dev