[LLVMdev] x86 unwind support[MESSAGE NOT SCANNED]

Andrew Haley aph at redhat.com
Mon Jul 20 04:59:48 PDT 2009


Mark Shannon wrote:
> Nick Johnson wrote:
>>> probably there should be a switch to choose whether codegen should turn
>>> unwind/invoke into dwarf or setjmp/longjmp style code.
> 
> It seems to me that there is an implicit, and undocumented, assumption 
> that unwinding needs to handle stack-allocated objects.
> 
> In languages without stack-allocated objects (ie. most languages that 
> support exceptions) there is no need to unwind frame-by-frame, the 
> unwind simply needs to make a single jump to the invoke instruction and 
> restore the context (which in x86 is just 6 registers).

Not quite.  It's also necessary to execute all the pending POSIX
pthread_cleanup_pop() actions.

> It is possible to implement invoke/unwind in such a way that both invoke
>   *and* unwind are fast, when  unwind just unwinds and doesn't perform
> any magic behind-the-scenes operations.

I don't think so.  Not for pthreads, anyway.

Andrew.



More information about the llvm-dev mailing list