on master help sign in
Apply static argument transformation to runOne
90161e1Harendra Kumar
src/Streamly/Streams/Parallel.hs+10−8
@@ -68,16 +68,18 @@ import qualified Streamly.Streams.StreamK as K
68runOne
68runOne
69 :: MonadIO m
69 :: MonadIO m
70 => State Stream m a -> Stream m a -> Maybe WorkerInfo -> m ()
70 => State Stream m a -> Stream m a -> Maybe WorkerInfo -> m ()
71−runOne st m winfo = do
71+runOne st m0 winfo = go m0
72− yieldLimitOk <- liftIO $ decrementYieldLimit sv
73− if yieldLimitOk
74− then do
75− liftIO $ decrementBufferLimit sv
76− foldStreamShared st yieldk single stop m
77− else liftIO $ cleanupSVarFromWorker sv
78
72
79 where
73 where
80
74
75+ go m = do
76+ yieldLimitOk <- liftIO $ decrementYieldLimit sv
77+ if yieldLimitOk
78+ then do
79+ liftIO $ decrementBufferLimit sv
80+ foldStreamShared st yieldk single stop m
81+ else liftIO $ cleanupSVarFromWorker sv
82+
81 sv = fromJust $ streamVar st
83 sv = fromJust $ streamVar st
82 mrun = runInIO $ svarMrun sv
84 mrun = runInIO $ svarMrun sv
83
85
@@ -87,7 +89,7 @@ runOne st m winfo = do
87 sendStop sv winfo
89 sendStop sv winfo
88 sendit a = liftIO $ void $ send sv (ChildYield a)
90 sendit a = liftIO $ void $ send sv (ChildYield a)
89 single a = sendit a >> (liftIO $ sendStop sv winfo)
91 single a = sendit a >> (liftIO $ sendStop sv winfo)
90− yieldk a r = sendit a >> (void $ liftIO $ mrun $ runOne st r winfo)
92+ yieldk a r = sendit a >> (void $ liftIO $ mrun $ go r)
91
93
92{-# NOINLINE forkSVarPar #-}
94{-# NOINLINE forkSVarPar #-}
93forkSVarPar :: (IsStream t, MonadAsync m)
95forkSVarPar :: (IsStream t, MonadAsync m)