on master help sign in
Rename unsafeSnoc to snocUnsafe
commitb5b5d9bf9e54185cd0dd94a65dca9a010fe8b2c3 authorHarendra Kumar <harendra@composewell.com> dateSun 10 Oct 2021, 19:34 (5 years ago) parent0a8689c
3 files changed+10−9
src/Streamly/Internal/Data/Array/Foreign.hs+2−1 src/Streamly/Internal/Data/Array/Foreign/Mut/Type.hs+5−5 src/Streamly/Internal/System/IOVec.hs+3−3
src/Streamly/Internal/Data/Array/Foreign.hs+2−1
@@ -305,7 +305,8 @@ writeLastN n
305305 arr <- liftIO $ MA.newArray n
306306 foldFunc i rh snoc' arr rb
307307
308− snoc' b a = liftIO $ MA.unsafeSnoc b a
308+ -- XXX We should write a read unfold for ring.
309+ snoc' b a = liftIO $ MA.snocUnsafe b a
309310
310311 foldFunc i
311312 | i < n = RB.unsafeFoldRingM
src/Streamly/Internal/Data/Array/Foreign/Mut/Type.hs+5−5
@@ -41,7 +41,7 @@ module Streamly.Internal.Data.Array.Foreign.Mut.Type
4141
4242 -- * Mutation
4343 , unsafeWriteIndex
44− , unsafeSnoc
44+ , snocUnsafe
4545 , snoc
4646
4747 -- * Casting
@@ -328,10 +328,10 @@ unsafeWriteIndex Array {..} i x =
328328-- Internal routine for when the array is being created. Appends one item at
329329-- the end of the array. Useful when sequentially writing a stream to the
330330-- array.
331−{-# INLINE unsafeSnoc #-}
332−unsafeSnoc :: forall m a. (MonadIO m, Storable a) => Array a -> a -> m (Array a)
333−unsafeSnoc arr@Array {..} x = liftIO $ do
334− when (aEnd == aBound) $ error "BUG: unsafeSnoc: writing beyond array bounds"
331+{-# INLINE snocUnsafe #-}
332+snocUnsafe :: forall m a. (MonadIO m, Storable a) => Array a -> a -> m (Array a)
333+snocUnsafe arr@Array {..} x = liftIO $ do
334+ when (aEnd == aBound) $ error "BUG: snocUnsafe: writing beyond array bounds"
335335 poke aEnd x
336336 touchForeignPtr aStart
337337 return $ arr {aEnd = aEnd `plusPtr` sizeOf (undefined :: a)}
src/Streamly/Internal/System/IOVec.hs+3−3
@@ -77,7 +77,7 @@ groupIOVecsOfMut n maxIOVLen (D.Stream step state) =
7777 let p = unsafeForeignPtrToPtr (aStart arr)
7878 len = MArray.byteLength arr
7979 iov <- liftIO $ MArray.newArray maxIOVLen
80− iov' <- liftIO $ MArray.unsafeSnoc iov (IOVec (castPtr p)
80+ iov' <- liftIO $ MArray.snocUnsafe iov (IOVec (castPtr p)
8181 (fromIntegral len))
8282 if len >= n
8383 then return $ D.Skip (GatherYielding iov' (GatherInitial s))
@@ -95,12 +95,12 @@ groupIOVecsOfMut n maxIOVLen (D.Stream step state) =
9595 if len' > n || length iov >= maxIOVLen
9696 then do
9797 iov' <- liftIO $ MArray.newArray maxIOVLen
98− iov'' <- liftIO $ MArray.unsafeSnoc iov' (IOVec (castPtr p)
98+ iov'' <- liftIO $ MArray.snocUnsafe iov' (IOVec (castPtr p)
9999 (fromIntegral alen))
100100 return $ D.Skip (GatherYielding iov
101101 (GatherBuffering s iov'' alen))
102102 else do
103− iov' <- liftIO $ MArray.unsafeSnoc iov (IOVec (castPtr p)
103+ iov' <- liftIO $ MArray.snocUnsafe iov (IOVec (castPtr p)
104104 (fromIntegral alen))
105105 return $ D.Skip (GatherBuffering s iov' len')
106106 D.Skip s -> return $ D.Skip (GatherBuffering s iov len)