@@ -85,9 +85,6 @@ import Foreign.Storable (Storable(..))
8585import GHC.Base (Addr#, nullAddr#, build)
8686import GHC.Exts (IsList, IsString(..))
8787
88−#ifdef DEVBUILD
89−import GHC.ForeignPtr (touchForeignPtr, unsafeForeignPtrToPtr)
90−#endif
9188import GHC.IO (unsafePerformIO)
9289import GHC.Ptr (Ptr(..))
9390import Streamly.Internal.Data.Array.Foreign.Mut.Type
@@ -742,24 +739,25 @@ instance (Storable a, Ord a) => Ord (Array a) where
742739--
743740{-# INLINE_NORMAL toStreamD_ #-}
744741toStreamD_ :: forall m a. MonadIO m => Int -> Array a -> D.Stream m a
745−toStreamD_ size Array{..} =
746− let p = unsafeForeignPtrToPtr aStart
747− in D.Stream step p
742+toStreamD_ size Array{..} = D.Stream step arrStart
748743
749744 where
750745
751746 {-# INLINE_LATE step #-}
752747 step _ p | p == aEnd = return D.Stop
753− step _ p = do
754− x <- liftIO $ do
755− r <- peek p
756− touchForeignPtr aStart
757− return r
748+ step _ p = liftIO $ do
749+ x <- peek p
750+ touch arrContents
758751 return $ D.Yield x (p `plusPtr` size)
759752
753+{-
754+
755+XXX Why isn't Storable implicit? This does not compile unless I use the Storable
756+contraint.
757+
760758{-# INLINE_NORMAL _foldr #-}
761759_foldr :: forall a b. (a -> b -> b) -> b -> Array a -> b
762−_foldr f z arr@Array {..} =
760+_foldr f z arr =
763761 let !n = sizeOf (undefined :: a)
764762 in unsafePerformIO $ D.foldr f z $ toStreamD_ n arr
765763
@@ -767,6 +765,8 @@ _foldr f z arr@Array {..} =
767765-- operations.
768766instance Foldable Array where
769767 foldr = _foldr
768+
769+-}
770770#endif
771771
772772-------------------------------------------------------------------------------