Don't look at all the threads before each GC.
authorSimon Marlow <simonmarhaskell@gmail.com>
Wed, 16 Apr 2008 23:44:46 +0000 (23:44 +0000)
committerSimon Marlow <simonmarhaskell@gmail.com>
Wed, 16 Apr 2008 23:44:46 +0000 (23:44 +0000)
commite7987f16175f88daa11f06f25d10161a95f84bc4
treeef37f54793292bbfffe0a14969f298470217682b
parent200c73fdfea734765c48309cc8dcbcf44b69c8c5
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).
rts/Schedule.c
rts/Schedule.h
rts/sm/GC.c
rts/sm/MarkWeak.c
rts/sm/MarkWeak.h
rts/sm/Storage.c