@@ -243,13 +243,10 @@ encodeAs :: forall a. Serialize a => PinnedState -> a -> Array Word8
243243encodeAs ps a =
244244 unsafeInlineIO $ do
245245 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)
249− off1 <- serialize 0 mbarr (fromIntegral len :: Int64)
250− off2 <- serialize off1 mbarr a
251− assertM(off2 == len + off1)
252− pure $ Array mbarr 0 len
246+ mbarr <- Unbox.newBytesAs ps len
247+ off <- serialize 0 mbarr a
248+ assertM(len == off)
249+ pure $ Array mbarr 0 off
253250
254251{-# INLINE encode #-}
255252encode :: Serialize a => a -> Array Word8
@@ -263,8 +260,6 @@ pinnedEncode = encodeAs Pinned
263260decode :: Serialize a => Array Word8 -> a
264261decode arr@(Array {..}) = unsafeInlineIO $ do
265262 let lenArr = Array.length arr
266− (off1, lenEncoding :: Int64) <- deserialize 0 arrContents lenArr
267− (off2, val) <- deserialize off1 arrContents lenArr
268− assertM(fromIntegral lenEncoding + off1 == off2)
269− assertM(lenArr == off2)
263+ (off, val) <- deserialize 0 arrContents lenArr
264+ assertM(lenArr == off)
270265 pure val