X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fgc-common.c;h=c358039319c3b339d70d069dd746f43a0713d52e;hb=d25e3478acccec70402ff32554669a982be8e281;hp=d01a4fc369e9b233554ecc941cb4c089273995d6;hpb=d9d75ffc2f436767c81a4091ec4ff7006c1ec676;p=sbcl.git diff --git a/src/runtime/gc-common.c b/src/runtime/gc-common.c index d01a4fc..c358039 100644 --- a/src/runtime/gc-common.c +++ b/src/runtime/gc-common.c @@ -2433,9 +2433,8 @@ maybe_gc(os_context_t *context) * outer context. */ #ifndef LISP_FEATURE_WIN32 - check_gc_signals_unblocked_in_sigset_or_lose - (os_context_sigmask_addr(context)); - unblock_gc_signals(); + check_gc_signals_unblocked_or_lose(os_context_sigmask_addr(context)); + unblock_gc_signals(0, 0); #endif FSHOW((stderr, "/maybe_gc: calling SUB_GC\n")); /* FIXME: Nothing must go wrong during GC else we end up running @@ -2454,15 +2453,19 @@ maybe_gc(os_context_t *context) * 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")); + if (!deferrables_blocked_p(context_sigmask)) { thread_sigmask(SIG_SETMASK, context_sigmask, 0); - check_gc_signals_unblocked_or_lose(); + check_gc_signals_unblocked_or_lose(0); +#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"));