Use _setjmp and _longjmp on MacOS.

llvm-svn: 101400
diff --git a/vmkit/include/mvm/Threads/Thread.h b/vmkit/include/mvm/Threads/Thread.h
index 5e15789..9b96b35 100644
--- a/vmkit/include/mvm/Threads/Thread.h
+++ b/vmkit/include/mvm/Threads/Thread.h
@@ -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 {
diff --git a/vmkit/lib/Mvm/CommonThread/ctthread.cpp b/vmkit/lib/Mvm/CommonThread/ctthread.cpp
index a1b51db..e8ef971 100644
--- a/vmkit/lib/Mvm/CommonThread/ctthread.cpp
+++ b/vmkit/lib/Mvm/CommonThread/ctthread.cpp
@@ -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() {