@@ -68,16 +68,18 @@ import qualified Streamly.Streams.StreamK as K
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
75− liftIO $ decrementBufferLimit sv
76− foldStreamShared st yieldk single stop m
77− else liftIO $ cleanupSVarFromWorker sv
76+ yieldLimitOk <- liftIO $ decrementYieldLimit sv
79+ liftIO $ decrementBufferLimit sv
80+ foldStreamShared st yieldk single stop m
81+ else liftIO $ cleanupSVarFromWorker sv
81 sv = fromJust $ streamVar st
83 sv = fromJust $ streamVar st
82 mrun = runInIO $ svarMrun sv
84 mrun = runInIO $ svarMrun sv
@@ -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)
92{-# NOINLINE forkSVarPar #-}
94{-# NOINLINE forkSVarPar #-}
93forkSVarPar :: (IsStream t, MonadAsync m)
95forkSVarPar :: (IsStream t, MonadAsync m)