From: Gabor M. <me...@us...> - 2009-03-01 15:57:21
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv19211/src/runtime Modified Files: gc-common.c interr.c interrupt.c Log Message: 1.0.25.57: fix compilation on win32 Index: gc-common.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/gc-common.c,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- gc-common.c 16 Feb 2009 22:01:45 -0000 1.60 +++ gc-common.c 1 Mar 2009 15:57:08 -0000 1.61 @@ -2454,15 +2454,19 @@ * here. */ ((SymbolValue(INTERRUPTS_ENABLED,thread) != NIL) || (SymbolValue(ALLOW_WITH_INTERRUPTS,thread) != NIL))) { +#ifndef LISP_FEATURE_WIN32 sigset_t *context_sigmask = os_context_sigmask_addr(context); if (!deferrables_blocked_in_sigset_p(context_sigmask)) { - FSHOW((stderr, "/maybe_gc: calling POST_GC\n")); thread_sigmask(SIG_SETMASK, context_sigmask, 0); check_gc_signals_unblocked_or_lose(); +#endif + FSHOW((stderr, "/maybe_gc: calling POST_GC\n")); funcall0(StaticSymbolFunction(POST_GC)); +#ifndef LISP_FEATURE_WIN32 } else { FSHOW((stderr, "/maybe_gc: punting on POST_GC due to blockage\n")); } +#endif } undo_fake_foreign_function_call(context); FSHOW((stderr, "/maybe_gc: returning\n")); Index: interr.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/interr.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- interr.c 16 Feb 2009 21:36:13 -0000 1.24 +++ interr.c 1 Mar 2009 15:57:08 -0000 1.25 @@ -95,8 +95,10 @@ corruption_warning_and_maybe_lose(char *fmt, ...) { va_list ap; +#ifndef LISP_FEATURE_WIN32 sigset_t oldset; thread_sigmask(SIG_BLOCK, &blockable_sigset, &oldset); +#endif fprintf(stderr, "CORRUPTION WARNING"); va_start(ap, fmt); print_message(fmt, ap); @@ -109,8 +111,10 @@ fflush(stderr); if (lose_on_corruption_p) call_lossage_handler(); +#ifndef LISP_FEATURE_WIN32 else thread_sigmask(SIG_SETMASK,&oldset,0); +#endif } /* internal error handler for when the Lisp error system doesn't exist Index: interrupt.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/interrupt.c,v retrieving revision 1.167 retrieving revision 1.168 diff -u -d -r1.167 -r1.168 --- interrupt.c 16 Feb 2009 22:30:25 -0000 1.167 +++ interrupt.c 1 Mar 2009 15:57:08 -0000 1.168 @@ -309,6 +309,7 @@ void maybe_save_gc_mask_and_block_deferrables(sigset_t *sigset) { +#ifndef LISP_FEATURE_WIN32 struct thread *thread = arch_os_get_current_thread(); struct interrupt_data *data = thread->interrupt_data; sigset_t oldset; @@ -341,6 +342,7 @@ } } thread_sigmask(SIG_SETMASK,&oldset,0); +#endif } /* Are we leaving WITH-GCING and already running with interrupts @@ -363,6 +365,7 @@ void check_interrupt_context_or_lose(os_context_t *context) { +#ifndef LISP_FEATURE_WIN32 struct thread *thread = arch_os_get_current_thread(); struct interrupt_data *data = thread->interrupt_data; int interrupt_deferred_p = (data->pending_handler != 0); @@ -411,6 +414,7 @@ * that run lisp code. */ check_gc_signals_unblocked_in_sigset_or_lose(sigset); } +#endif } /* When we catch an internal error, should we pass it back to Lisp to @@ -745,7 +749,9 @@ * the os_context for the signal we're currently in the * handler for. This should ensure that when we return from * the handler the blocked signals are unblocked. */ +#ifndef LISP_FEATURE_WIN32 sigcopyset(os_context_sigmask_addr(context), &data->pending_mask); +#endif data->gc_blocked_deferrables = 0; } @@ -1170,8 +1176,10 @@ void arrange_return_to_lisp_function(os_context_t *context, lispobj function) { +#ifndef LISP_FEATURE_WIN32 check_gc_signals_unblocked_in_sigset_or_lose (os_context_sigmask_addr(context)); +#endif #if !(defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)) void * fun=native_pointer(function); void *code = &(((struct simple_fun *) fun)->code); |