@@ -92,6 +92,9 @@ import Foreign.Storable (Storable(..))
92import GHC.Base (Addr#, nullAddr#)
92import GHC.Base (Addr#, nullAddr#)
93import GHC.Exts (IsList, IsString(..))
93import GHC.Exts (IsList, IsString(..))
94import GHC.ForeignPtr (ForeignPtr(..), newForeignPtr_)
94import GHC.ForeignPtr (ForeignPtr(..), newForeignPtr_)
96+import GHC.ForeignPtr (touchForeignPtr, unsafeForeignPtrToPtr)
95import GHC.IO (unsafePerformIO)
98import GHC.IO (unsafePerformIO)
96import GHC.Ptr (Ptr(..))
99import GHC.Ptr (Ptr(..))
97import Streamly.Internal.Data.Fold.Types (Fold(..), lmap)
100import Streamly.Internal.Data.Fold.Types (Fold(..), lmap)
@@ -232,7 +235,11 @@ spliceTwo arr1 arr2 =
232-- /Internal/
235-- /Internal/
234{-# INLINE fromPtr #-}
237{-# INLINE fromPtr #-}
235−fromPtr :: Int -> Ptr a -> Array a
242+ Int -> Ptr a -> Array a
236fromPtr n ptr = MA.unsafeInlineIO $ do
243fromPtr n ptr = MA.unsafeInlineIO $ do
237 fptr <- newForeignPtr_ ptr
244 fptr <- newForeignPtr_ ptr
238 let end = ptr `plusPtr` n
245 let end = ptr `plusPtr` n
@@ -274,7 +281,11 @@ fromPtr n ptr = MA.unsafeInlineIO $ do
274-- /Internal/
281-- /Internal/
276{-# INLINE fromAddr# #-}
283{-# INLINE fromAddr# #-}
277−fromAddr# :: Int -> Addr# -> Array a
288+ Int -> Addr# -> Array a
278fromAddr# n addr# = fromPtr n (castPtr $ Ptr addr#)
289fromAddr# n addr# = fromPtr n (castPtr $ Ptr addr#)
280-- | Generate a byte array from an 'Addr#' that contains a sequence of NUL
291-- | Generate a byte array from an 'Addr#' that contains a sequence of NUL