, throwTo -- :: ThreadId -> Exception -> IO ()
, par -- :: a -> b -> b
, pseq -- :: a -> b -> b
+ , runSparks
, yield -- :: IO ()
, labelThread -- :: ThreadId -> String -> IO ()
par :: a -> b -> b
par x y = case (par# x) of { _ -> lazy y }
+-- | Internal function used by the RTS to run sparks.
+runSparks :: IO ()
+runSparks = IO loop
+ where loop s = case getSpark# s of
+ (# s', n, p #) ->
+ if n ==# 0# then (# s', () #)
+ else p `seq` loop s'
data BlockReason
= BlockedOnMVar