From: Simon Marlow Date: Mon, 23 Aug 2010 10:46:54 +0000 (+0000) Subject: Add a couple of missing tests for EAGER_BLACKHOLE X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=fd316eba4747cf8bb9381e06c7afc3c024e1e5c1 Add a couple of missing tests for EAGER_BLACKHOLE This was leading to looping and excessive allocation, when the computation should have just blocked on the black hole. Reported by Christian Höner zu Siederdissen on glasgow-haskell-users. --- diff --git a/rts/Messages.c b/rts/Messages.c index f7cb809..5e0fa25 100644 --- a/rts/Messages.c +++ b/rts/Messages.c @@ -175,6 +175,7 @@ nat messageBlackHole(Capability *cap, MessageBlackHole *msg) // all. if (info != &stg_BLACKHOLE_info && info != &stg_CAF_BLACKHOLE_info && + info != &__stg_EAGER_BLACKHOLE_info && info != &stg_WHITEHOLE_info) { // if it is a WHITEHOLE, then a thread is in the process of // trying to BLACKHOLE it. But we know that it was once a diff --git a/rts/Threads.c b/rts/Threads.c index 25241c7..6635ed5 100644 --- a/rts/Threads.c +++ b/rts/Threads.c @@ -388,6 +388,7 @@ updateThunk (Capability *cap, StgTSO *tso, StgClosure *thunk, StgClosure *val) i = thunk->header.info; if (i != &stg_BLACKHOLE_info && i != &stg_CAF_BLACKHOLE_info && + i != &__stg_EAGER_BLACKHOLE_info && i != &stg_WHITEHOLE_info) { updateWithIndirection(cap, thunk, val); return;