@@ -243,13 +243,10 @@ encodeAs :: forall a. Serialize a => PinnedState -> a -> Array Word8
243encodeAs ps a =
243encodeAs ps a =
244 unsafeInlineIO $ do
244 unsafeInlineIO $ do
245 let len = size 0 a
245 let len = size 0 a
246− -- We encode the length of the encoding as a header hence the 8 extra
247− -- bytes to encode Int64
248− mbarr <- Unbox.newBytesAs ps (8 + len)
246+ mbarr <- Unbox.newBytesAs ps len
249− off1 <- serialize 0 mbarr (fromIntegral len :: Int64)
247+ off <- serialize 0 mbarr a
250− off2 <- serialize off1 mbarr a
251− assertM(off2 == len + off1)
248+ assertM(len == off)
252− pure $ Array mbarr 0 len
249+ pure $ Array mbarr 0 off
254{-# INLINE encode #-}
251{-# INLINE encode #-}
255encode :: Serialize a => a -> Array Word8
252encode :: Serialize a => a -> Array Word8
@@ -263,8 +260,6 @@ pinnedEncode = encodeAs Pinned
263decode :: Serialize a => Array Word8 -> a
260decode :: Serialize a => Array Word8 -> a
264decode arr@(Array {..}) = unsafeInlineIO $ do
261decode arr@(Array {..}) = unsafeInlineIO $ do
265 let lenArr = Array.length arr
262 let lenArr = Array.length arr
266− (off1, lenEncoding :: Int64) <- deserialize 0 arrContents lenArr
267− (off2, val) <- deserialize off1 arrContents lenArr
263+ (off, val) <- deserialize 0 arrContents lenArr
268− assertM(fromIntegral lenEncoding + off1 == off2)
269− assertM(lenArr == off2)
264+ assertM(lenArr == off)