X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FWeak.c;h=7201ba11a8045e02109bf96ee6588cd36e4c92c9;hb=85aa72b9dc6803685595936c61f3cab6faab815a;hp=f216f62561d8b4505485ce69b3f1df36c02b5ccb;hpb=af13609607da81e7837a7c7c598de82452363ab5;p=ghc-hetmet.git diff --git a/ghc/rts/Weak.c b/ghc/rts/Weak.c index f216f62..7201ba1 100644 --- a/ghc/rts/Weak.c +++ b/ghc/rts/Weak.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Weak.c,v 1.27 2003/01/25 15:54:50 wolfgang Exp $ + * $Id: Weak.c,v 1.30 2003/09/21 22:20:56 wolfgang Exp $ * * (c) The GHC Team, 1998-1999 * @@ -14,6 +14,7 @@ #include "RtsFlags.h" #include "Weak.h" #include "Storage.h" +#include "Schedule.h" #include "Prelude.h" #include "RtsAPI.h" @@ -34,28 +35,20 @@ finalizeWeakPointersNow(void) { StgWeak *w; -#if defined(RTS_SUPPORTS_THREADS) rts_lock(); -#endif while ((w = weak_ptr_list)) { weak_ptr_list = w->link; if (w->header.info != &stg_DEAD_WEAK_info) { w->header.info = &stg_DEAD_WEAK_info; IF_DEBUG(weak,fprintf(stderr,"Finalising weak pointer at %p -> %p\n", w, w->key)); if (w->finalizer != &stg_NO_FINALIZER_closure) { -#if defined(RTS_SUPPORTS_THREADS) - rts_evalIO(w->finalizer,NULL); + rts_evalLazyIO(w->finalizer,NULL); rts_unlock(); rts_lock(); -#else - rts_mainEvalIO(w->finalizer,NULL); -#endif } } } -#if defined(RTS_SUPPORTS_THREADS) rts_unlock(); -#endif } /*