[vmkit-commits] [vmkit] r101400 - in /vmkit/trunk: include/mvm/Threads/Thread.h lib/Mvm/CommonThread/ctthread.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Thu Apr 15 13:59:30 PDT 2010
Author: geoffray
Date: Thu Apr 15 15:59:30 2010
New Revision: 101400
URL: http://llvm.org/viewvc/llvm-project?rev=101400&view=rev
Log:
Use _setjmp and _longjmp on MacOS.
Modified:
vmkit/trunk/include/mvm/Threads/Thread.h
vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp
Modified: vmkit/trunk/include/mvm/Threads/Thread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/Threads/Thread.h?rev=101400&r1=101399&r2=101400&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/Threads/Thread.h (original)
+++ vmkit/trunk/include/mvm/Threads/Thread.h Thu Apr 15 15:59:30 2010
@@ -17,16 +17,20 @@
#include "types.h"
#ifdef RUNTIME_DWARF_EXCEPTIONS
-#define TRY try
-#define CATCH catch(...)
-#define IGNORE catch(...) { mvm::Thread::get()->clearException(); }
-#define END_CATCH
+ #define TRY try
+ #define CATCH catch(...)
+ #define IGNORE catch(...) { mvm::Thread::get()->clearException(); }
+ #define END_CATCH
#else
-#include <csetjmp>
-#define TRY { mvm::ExceptionBuffer __buffer__; if (!setjmp(__buffer__.buffer))
-#define CATCH else
-#define IGNORE else { mvm::Thread::get()->clearException(); }}
-#define END_CATCH }
+ #include <csetjmp>
+ #if defined(__MACH__)
+ #define TRY { mvm::ExceptionBuffer __buffer__; if (!_setjmp(__buffer__.buffer))
+ #else
+ #define TRY { mvm::ExceptionBuffer __buffer__; if (!setjmp(__buffer__.buffer))
+ #endif
+ #define CATCH else
+ #define IGNORE else { mvm::Thread::get()->clearException(); }}
+ #define END_CATCH }
#endif
namespace mvm {
Modified: vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp?rev=101400&r1=101399&r2=101400&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp (original)
+++ vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp Thu Apr 15 15:59:30 2010
@@ -90,8 +90,12 @@
internalPendingException = (void*)((uintptr_t)exc - 32);
cxa_throw(exc, 0, 0);
#else
+#if defined(__MACH__)
+ _longjmp(lastExceptionBuffer->buffer, 1);
+#else
longjmp(lastExceptionBuffer->buffer, 1);
#endif
+#endif
}
void Thread::printBacktrace() {
More information about the vmkit-commits
mailing list