| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
> One thing that I've found very useful is to translate Unix signals > into C++ exceptions (from GCC 4.2 this is supported on Linux). One > gets semantics very close to what MS VC++: > > try { > *(int*)0 = 0; > } catch ( SignalException* pse ) { > printf( "Exception condition: %s\n", pse->GetReason() ); > } > Thanks for pointing this out. Just off the top of my head, there is some chance we can make this work with MinGW GCC as well. I'll look into it. > This provides a safety net when loading plugins or other running other > code that one has not built oneself. Without a mechanism like this, the > app is doomed whenever 3rd party code does a NULL pointer access or > divide by zero. For me this is a crucial feature. MinGW can do it presently using the 'manual' SEH interface in <expt.h>, but it isn't nearly as pretty. > As I see it the either-or debate (SJLJ/DWARF) is a bit limiting. SJLJ > is slow because it does a complete CPU state save (FPU, MMX?, SSE?). > This is needed when saving thread context. However, jumping into a > catch block, it is way too much. ... > My vote would be for a light weight state exception mechanism for Windows. > It is not affected by foreign frames, is quite fast and small. It would > be per thread. A decent interface / binding with SEH on top of that would > be a bonus. I think SEH might be close that 'light weight' mechanism you propose, as it doesn't save state, and uses a per-thread mechanism. Unfortunately, MinGW maintainers do not have the resources to write a new exception model; we don't even have resources to implement SEH, a frequently-demanded feature. However, the problem is not that the exception throwing or catching is slow. The problem is that merely passing through a try {} block or exception specification such as throw(std::bad_alloc) has a small penalty, which can be measurable in tight loops. DW2 completely solves the problem, by having no direct runtime cost at all. ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ MinGW-users mailing list MinGW-users You may change your MinGW Account Options or unsubscribe at: https://lists.sourceforge.net/lists/listinfo/mingw-users
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
© 2004-2008 readlist.com