search for: thunk_item_m_delet

Displaying 8 results from an estimated 8 matches for "thunk_item_m_delet".

Did you mean: thunk_item_m_delete
2012 Mar 23
2
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
...you're right, that I shouldn't need any try/catch at all. > > When I put tracer print statements in my class's destructors, I can see that they are called only if I explicitly call them via JIT'd code that calls the relevant thunk, e.g.: > > extern "C" void thunk_item_M_delete( void *v_that ) { > item *const that = static_cast<item*>( v_that ); > that->~item(); > } > > Given that I have to call the thunks to run the d'tors manually in the normal control-flow case, it would seem that I would also have to call them in the exception-thro...
2012 Mar 23
0
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
On Mar 23, 2012, at 3:25 PM, Bill Wendling wrote: > Let's take your example. You will have code that looks like this: > > extern "C" void thunk_item_M_delete( void *v_that ) { > item *that = 0; > try { > that = static_cast<item*>( v_that ); > that->~item(); > } catch (...) { > that->~item(); > } > } No I wouldn't since destructors should never throw exceptions: http://www.parashift....
2012 Mar 23
0
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
...t would seem that if you're right, that I shouldn't need any try/catch at all. When I put tracer print statements in my class's destructors, I can see that they are called only if I explicitly call them via JIT'd code that calls the relevant thunk, e.g.: extern "C" void thunk_item_M_delete( void *v_that ) { item *const that = static_cast<item*>( v_that ); that->~item(); } Given that I have to call the thunks to run the d'tors manually in the normal control-flow case, it would seem that I would also have to call them in the exception-thrown control-flow case -- r...
2012 Mar 23
2
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
On Mar 23, 2012, at 4:29 PM, Paul J. Lucas wrote: > On Mar 23, 2012, at 3:25 PM, Bill Wendling wrote: > >> Let's take your example. You will have code that looks like this: >> >> extern "C" void thunk_item_M_delete( void *v_that ) { >> item *that = 0; >> try { >> that = static_cast<item*>( v_that ); >> that->~item(); >> } catch (...) { >> that->~item(); >> } >> } > > No I wouldn't since destructors should never throw e...
2012 Mar 23
2
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
On Mar 22, 2012, at 11:40 AM, Paul J. Lucas <paul at lucasmail.org> wrote: > On Mar 22, 2012, at 12:28 AM, Bill Wendling wrote: > >> On Mar 20, 2012, at 7:38 PM, Paul J. Lucas wrote: >> >>> I've read the docs on LLVM exceptions, but I don't see any examples. A little help? >> >> I don't think this has anything to do with LLVM's
2012 Apr 08
0
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
...ge, align 8 > store i8 1, i8* %exception_caught_flag, align 1 > br label %exit > > dtor: ; preds = %unwind2, %dtor3 > %6 = phi %0 [ %9, %unwind2 ], [ %10, %dtor3 ] > %7 = phi i8 [ 1, %unwind2 ], [ %11, %dtor3 ] > call void @thunk_item_M_delete(void* %0) > br label %exit > > normal1: ; preds = %normal > %8 = bitcast %singleton_iterator* %x_it to void* > invoke void @thunk_singleton_iterator_M_new(void* %8, void* %0) > to label %normal4 unwind label %unwind5 >...
2012 Apr 08
2
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
On Apr 4, 2012, at 9:32 PM, Paul J. Lucas wrote: > On Mar 23, 2012, at 4:46 PM, Bill Wendling wrote: [...] > This all seems to work just fine. I can throw a C++ exception either in a C++ object's constructor or in an ordinary member function and the stack unwinds correctly (the object's destructors are called) and the exception is propagated back up the C++ code that called the
2012 Apr 09
5
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
...tore i8 1, i8* %exception_caught_flag, align 1 >> br label %exit >> >> dtor: ; preds = %unwind2, %dtor3 >> %6 = phi %0 [ %9, %unwind2 ], [ %10, %dtor3 ] >> %7 = phi i8 [ 1, %unwind2 ], [ %11, %dtor3 ] >> call void @thunk_item_M_delete(void* %0) >> br label %exit >> >> normal1: ; preds = %normal >> %8 = bitcast %singleton_iterator* %x_it to void* >> invoke void @thunk_singleton_iterator_M_new(void* %8, void* %0) >> to label %normal4 unwind...