]> gitweb.factorcode.org Git - factor.git/commitdiff
Intel Mac exception handler fix
authorslava <slava@factorcode.org>
Mon, 2 Oct 2006 05:11:56 +0000 (05:11 +0000)
committerslava <slava@factorcode.org>
Mon, 2 Oct 2006 05:11:56 +0000 (05:11 +0000)
TODO.FACTOR.txt
vm/mach_signal.c
vm/os-macosx-x86.h

index 6c667a998fe445dc38761b0c88eefab1aebc60b3..53454963a162a1cd57957ba7fa427decd68f2bbe 100644 (file)
@@ -1,9 +1,9 @@
 - auto-invoke code gc
-- signal 4 on datastack underflow on mac intel??
 - fix alien-callback/SEH bug on win32
 
 + ui:
 
+- the mouse button overload sucks, use popup menus instead
 - nested presentation mouse over is not right
 - ui quick start doc
 - x11: scroll up/down wiggles caret
index b87d054e54a8423aa3f958757337265648581ddb..1b246ac733b6893cf9137ebb9c7c9c0064576af0 100644 (file)
@@ -19,9 +19,6 @@ see http://www.caddr.com/macho/archives/sbcl-devel/2005-3/4764.html */
 /* The exception port on which our thread listens.  */
 static mach_port_t our_exception_port;
 
-/* Communication area for the exception state and thread state.  */
-static SIGSEGV_THREAD_STATE_TYPE save_thread_state;
-
 /* A handler that is called in the faulting thread. */
 static void
 terminating_handler (void *fault_addr)
@@ -69,8 +66,6 @@ catch_exception_raise (mach_port_t exception_port,
 
   sp = (unsigned long) (SIGSEGV_STACK_POINTER (thread_state));
 
-  save_thread_state = thread_state;
-
   SIGSEGV_PROGRAM_COUNTER (thread_state) = (unsigned long) terminating_handler;
   SIGSEGV_STACK_POINTER (thread_state) = fix_stack_ptr(sp);
   pass_arg0(&thread_state,SIGSEGV_EXC_STATE_FAULT(exc_state));
index 2daf2cbc94c6dee48b99bdd7f1f3c2ee0daf18e8..7bf12998bb0cdbc2dc5cab544dbd6896cda335a2 100644 (file)
@@ -11,9 +11,7 @@
 /* Adjust stack pointer so we can push an arg */
 INLINE unsigned long fix_stack_ptr(unsigned long sp)
 {
-         if ((sp & 0xf) != 0) sp -= (sp & 0xf);
-         sp -= 8;
-         return sp;
+         return sp - (sp & 0xf);
 }
 
 INLINE void pass_arg0(SIGSEGV_THREAD_STATE_TYPE *thr_state, CELL arg)