diff options
author | Simon Marlow <simonmarhaskell@gmail.com> | 2008-04-16 23:44:46 +0000 |
---|---|---|
committer | Simon Marlow <simonmarhaskell@gmail.com> | 2008-04-16 23:44:46 +0000 |
commit | e7987f16175f88daa11f06f25d10161a95f84bc4 (patch) | |
tree | ef37f54793292bbfffe0a14969f298470217682b /rts/Schedule.h | |
parent | 200c73fdfea734765c48309cc8dcbcf44b69c8c5 (diff) | |
download | haskell-e7987f16175f88daa11f06f25d10161a95f84bc4.tar.gz |
Don't look at all the threads before each GC.
We were looking at all the threads for 2 reasons:
1. to catch transactions that might be looping as a
result of seeing an inconsistent view of memory.
2. to catch threads with blocked exceptions that are
themselves blocked.
For (1) we now check for this case whenever a thread yields, and for
(2) we catch these threads in the GC itself and send the exceptions
after GC (see performPendingThrowTos).
Diffstat (limited to 'rts/Schedule.h')
-rw-r--r-- | rts/Schedule.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/rts/Schedule.h b/rts/Schedule.h index 89ac1125fa..59bdb9e999 100644 --- a/rts/Schedule.h +++ b/rts/Schedule.h @@ -154,6 +154,7 @@ void interruptStgRts (void); nat run_queue_len (void); void resurrectThreads (StgTSO *); +void performPendingThrowTos (StgTSO *); void printAllThreads(void); |