@@ -276,9 +276,7 @@ sendWorkerWait ctx = do
276276 when (not workQEmpty && outQEmpty) $ pushWorker ctx
277277 void $ liftIO $ atomically $ peekTBQueue (outputQueue ctx)
278278
279−-- We re-raise any exceptions received from the child threads, that way
280−-- exceptions get propagated to the top level computation and can be handled
281−-- there.
279+-- Note: This is performance sensitive code.
282280{-# NOINLINE pullWorker #-}
283281pullWorker :: MonadAsync m => Context m a -> AsyncT m a
284282pullWorker ctx = AsyncT $ \pctx stp yld -> do
@@ -375,13 +373,14 @@ pullFork m1 m2 = AsyncT $ \_ stp yld -> do
375373-- residual work back to the dispatcher. It will also consume a lot of
376374-- memory due to queueing of all the work before execution starts.
377375
378−{-# INLINE forkWorker #-}
376+{-# NOINLINE forkWorker #-}
379377forkWorker :: MonadAsync m => Context m a -> m ()
380378forkWorker ctx = do
381379 let q = outputQueue ctx
382380 tid <- doFork (push ctx) (handleChildException q)
383381 liftIO $ atomically $ writeTBQueue q (ChildCreate tid)
384382
383+-- Note: This is performance sensitive code.
385384{-# INLINE queueWork #-}
386385queueWork :: MonadAsync m => Context m a -> AsyncT m a -> m ()
387386queueWork ctx m = do
@@ -396,6 +395,7 @@ queueWork ctx m = do
396395 when (workQFull) $ forkWorker ctx
397396 liftIO $ atomically $ writeTBQueue (workQueue ctx) m
398397
398+-- Note: This is performance sensitive code.
399399{-# INLINE dequeueLoop #-}
400400dequeueLoop :: MonadAsync m => Context m a -> AsyncT m a
401401dequeueLoop ctx = AsyncT $ \_ stp yld -> do