@@ -85,9 +85,6 @@ import Foreign.Storable (Storable(..))
85import GHC.Base (Addr#, nullAddr#, build)
85import GHC.Base (Addr#, nullAddr#, build)
86import GHC.Exts (IsList, IsString(..))
86import GHC.Exts (IsList, IsString(..))
89−import GHC.ForeignPtr (touchForeignPtr, unsafeForeignPtrToPtr)
91import GHC.IO (unsafePerformIO)
88import GHC.IO (unsafePerformIO)
92import GHC.Ptr (Ptr(..))
89import GHC.Ptr (Ptr(..))
93import Streamly.Internal.Data.Array.Foreign.Mut.Type
90import Streamly.Internal.Data.Array.Foreign.Mut.Type
@@ -742,24 +739,25 @@ instance (Storable a, Ord a) => Ord (Array a) where
743{-# INLINE_NORMAL toStreamD_ #-}
740{-# INLINE_NORMAL toStreamD_ #-}
744toStreamD_ :: forall m a. MonadIO m => Int -> Array a -> D.Stream m a
741toStreamD_ :: forall m a. MonadIO m => Int -> Array a -> D.Stream m a
745−toStreamD_ size Array{..} =
742+toStreamD_ size Array{..} = D.Stream step arrStart
746− let p = unsafeForeignPtrToPtr aStart
751 {-# INLINE_LATE step #-}
746 {-# INLINE_LATE step #-}
752 step _ p | p == aEnd = return D.Stop
747 step _ p | p == aEnd = return D.Stop
754− x <- liftIO $ do
748+ step _ p = liftIO $ do
755− r <- peek p
749+ x <- peek p
756− touchForeignPtr aStart
750+ touch arrContents
758 return $ D.Yield x (p `plusPtr` size)
751 return $ D.Yield x (p `plusPtr` size)
755+XXX Why isn't Storable implicit? This does not compile unless I use the Storable
760{-# INLINE_NORMAL _foldr #-}
758{-# INLINE_NORMAL _foldr #-}
761_foldr :: forall a b. (a -> b -> b) -> b -> Array a -> b
759_foldr :: forall a b. (a -> b -> b) -> b -> Array a -> b
762−_foldr f z arr@Array {..} =
760+_foldr f z arr =
763 let !n = sizeOf (undefined :: a)
761 let !n = sizeOf (undefined :: a)
764 in unsafePerformIO $ D.foldr f z $ toStreamD_ n arr
762 in unsafePerformIO $ D.foldr f z $ toStreamD_ n arr
@@ -767,6 +765,8 @@ _foldr f z arr@Array {..} =
767-- operations.
765-- operations.
768instance Foldable Array where
766instance Foldable Array where
769 foldr = _foldr
767 foldr = _foldr
772-------------------------------------------------------------------------------
772-------------------------------------------------------------------------------