From 651609a91322a50b7f66238ab56cae936bde311a Mon Sep 17 00:00:00 2001 From: Andrew Martin <andrew.thaddeus@gmail.com> Date: Thu, 23 Mar 2023 11:15:45 -0400 Subject: [PATCH] Use mutableByteArrayContents# when available --- Data/Primitive/ByteArray.hs | 8 ++++++-- Data/Primitive/PrimArray.hs | 8 ++++++-- changelog.md | 2 ++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Data/Primitive/ByteArray.hs b/Data/Primitive/ByteArray.hs index c019ad0..54d6be3 100644 --- a/Data/Primitive/ByteArray.hs +++ b/Data/Primitive/ByteArray.hs @@ -132,8 +132,12 @@ byteArrayContents (ByteArray arr#) = Ptr (byteArrayContents# arr#) -- 'newAlignedPinnedByteArray'. mutableByteArrayContents :: MutableByteArray s -> Ptr Word8 {-# INLINE mutableByteArrayContents #-} -mutableByteArrayContents (MutableByteArray arr#) - = Ptr (byteArrayContents# (unsafeCoerce# arr#)) +mutableByteArrayContents (MutableByteArray arr#) = Ptr +#if __GLASGOW_HASKELL__ >= 902 + (mutableByteArrayContents# arr#) +#else + (byteArrayContents# (unsafeCoerce# arr#)) +#endif -- | Check if the two arrays refer to the same memory block. sameMutableByteArray :: MutableByteArray s -> MutableByteArray s -> Bool diff --git a/Data/Primitive/PrimArray.hs b/Data/Primitive/PrimArray.hs index ca8c3eb..a728cdf 100644 --- a/Data/Primitive/PrimArray.hs +++ b/Data/Primitive/PrimArray.hs @@ -1122,8 +1122,12 @@ primArrayContents (PrimArray arr#) = Ptr (byteArrayContents# arr#) -- @since 0.7.1.0 mutablePrimArrayContents :: MutablePrimArray s a -> Ptr a {-# INLINE mutablePrimArrayContents #-} -mutablePrimArrayContents (MutablePrimArray arr#) - = Ptr (byteArrayContents# (unsafeCoerce# arr#)) +mutablePrimArrayContents (MutablePrimArray arr#) = Ptr +#if __GLASGOW_HASKELL__ >= 902 + (mutableByteArrayContents# arr#) +#else + (byteArrayContents# (unsafeCoerce# arr#)) +#endif -- | Return a newly allocated array with the specified subrange of the -- provided array. The provided array should contain the full subrange diff --git a/changelog.md b/changelog.md index 8303e2e..2898c71 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,8 @@ * Remove re-export of `fromList` and `fromListN` from `Data.Primitive.Array`. + * Use `mutableByteArrayContents#` in GHC 9.2+ + * Add `getSizeofSmallMutableArray` that wraps `getSizeofSmallMutableArray#` from `GHC.Exts`. -- GitLab