projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b7212d4
)
minor refactoring
author
Simon Marlow
<marlowsd@gmail.com>
Sun, 26 Sep 2010 10:58:19 +0000
(10:58 +0000)
committer
Simon Marlow
<marlowsd@gmail.com>
Sun, 26 Sep 2010 10:58:19 +0000
(10:58 +0000)
rts/RaiseAsync.c
patch
|
blob
|
history
diff --git
a/rts/RaiseAsync.c
b/rts/RaiseAsync.c
index
c4c3f1d
..
628dff8
100644
(file)
--- a/
rts/RaiseAsync.c
+++ b/
rts/RaiseAsync.c
@@
-57,15
+57,9
@@
static void throwToSendMsg (Capability *cap USED_IF_THREADS,
has been raised.
-------------------------------------------------------------------------- */
has been raised.
-------------------------------------------------------------------------- */
-void
-throwToSingleThreaded(Capability *cap, StgTSO *tso, StgClosure *exception)
-{
- throwToSingleThreaded_(cap, tso, exception, rtsFalse);
-}
-
-void
-throwToSingleThreaded_(Capability *cap, StgTSO *tso, StgClosure *exception,
- rtsBool stop_at_atomically)
+static void
+throwToSingleThreaded__ (Capability *cap, StgTSO *tso, StgClosure *exception,
+ rtsBool stop_at_atomically, StgUpdateFrame *stop_here)
{
tso = deRefTSO(tso);
{
tso = deRefTSO(tso);
@@
-77,23
+71,26
@@
throwToSingleThreaded_(Capability *cap, StgTSO *tso, StgClosure *exception,
// Remove it from any blocking queues
removeFromQueues(cap,tso);
// Remove it from any blocking queues
removeFromQueues(cap,tso);
- raiseAsync(cap, tso, exception, stop_at_atomically, NULL);
+ raiseAsync(cap, tso, exception, stop_at_atomically, stop_here);
}
void
}
void
-suspendComputation(Capability *cap, StgTSO *tso, StgUpdateFrame *stop_here)
+throwToSingleThreaded (Capability *cap, StgTSO *tso, StgClosure *exception)
{
{
- tso = deRefTSO(tso);
-
- // Thread already dead?
- if (tso->what_next == ThreadComplete || tso->what_next == ThreadKilled) {
- return;
- }
+ throwToSingleThreaded__(cap, tso, exception, rtsFalse, NULL);
+}
- // Remove it from any blocking queues
- removeFromQueues(cap,tso);
+void
+throwToSingleThreaded_ (Capability *cap, StgTSO *tso, StgClosure *exception,
+ rtsBool stop_at_atomically)
+{
+ throwToSingleThreaded__ (cap, tso, exception, stop_at_atomically, NULL);
+}
- raiseAsync(cap, tso, NULL, rtsFalse, stop_here);
+void
+suspendComputation (Capability *cap, StgTSO *tso, StgUpdateFrame *stop_here)
+{
+ throwToSingleThreaded__ (cap, tso, NULL, rtsFalse, stop_here);
}
/* -----------------------------------------------------------------------------
}
/* -----------------------------------------------------------------------------
@@
-406,7
+403,8
@@
check_target:
}
if (task != NULL) {
blockedThrowTo(cap, target, msg);
}
if (task != NULL) {
blockedThrowTo(cap, target, msg);
- if (!((target->flags & TSO_BLOCKEX) && ((target->flags & TSO_INTERRUPTIBLE) == 0))) {
+ if (!((target->flags & TSO_BLOCKEX) &&
+ ((target->flags & TSO_INTERRUPTIBLE) == 0))) {
interruptWorkerTask(task);
}
return THROWTO_BLOCKED;
interruptWorkerTask(task);
}
return THROWTO_BLOCKED;