summaryrefslogtreecommitdiff
path: root/rts/Messages.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2010-03-29 14:46:13 +0000
committerSimon Marlow <marlowsd@gmail.com>2010-03-29 14:46:13 +0000
commit848797ebb9b60cf9c8a004c97afd008f5325c75f (patch)
tree155a9fc6a4495d06694cc4956dc4461179fe5d7c /rts/Messages.c
parent1373cd3085b8dec456e6118c58e940718cb9d559 (diff)
downloadhaskell-848797ebb9b60cf9c8a004c97afd008f5325c75f.tar.gz
change throwTo to use tryWakeupThread rather than unblockOne
Diffstat (limited to 'rts/Messages.c')
-rw-r--r--rts/Messages.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/rts/Messages.c b/rts/Messages.c
index 2b40f76e93..6a7c64de58 100644
--- a/rts/Messages.c
+++ b/rts/Messages.c
@@ -114,11 +114,9 @@ loop:
switch (r) {
case THROWTO_SUCCESS:
- ASSERT(t->source->sp[0] == (StgWord)&stg_block_throwto_info);
- t->source->sp += 3;
- unblockOne(cap, t->source);
// this message is done
- unlockClosure((StgClosure*)m, &stg_IND_info);
+ unlockClosure((StgClosure*)m, &stg_MSG_NULL_info);
+ tryWakeupThread(cap, t->source);
break;
case THROWTO_BLOCKED:
// unlock the message
@@ -137,7 +135,7 @@ loop:
}
return;
}
- else if (i == &stg_IND_info)
+ else if (i == &stg_IND_info || i == &stg_MSG_NULL_info)
{
// message was revoked
return;