>>>>> "jacob" == jacob navia <[EMAIL PROTECTED]> writes:

jacob> This application generates dynamically code and executes it, using a
jacob> JIT, a Just In time Compiler. Everything is working OK until the C++
jacob> code generates a throw.

Fun!

I looked at this a little bit with libgcj.

In some ways for libgcj it is simpler than it is for C++, since in the
gcj context we know that the only objects thrown will be pointers.
So, if we were so inclined, we could give the JIT its own exception
handling approach and have little trampoline functions to handle the
boundary cases.

Unfortunately things are also worse for libgcj, in that we need to be
able to generate stack traces as well, and the trampoline function
approach won't work there.

Still, if you know something about the uses of 'throw' in your
program, maybe this would work for you.

Longer term, yeah, gcc's unwinder needs a JIT API, and then the
various JITs need to be updated to use it.  At least LLVM appears to
be headed this direction.

Tom

Reply via email to