@@ -20,7 +20,7 @@ import Control.Monad.Primitive
2020import Data.BloomFilter (Bloom )
2121import qualified Data.ByteString.Lazy as BSL
2222import Data.Foldable (for_ , traverse_ )
23- import Data.Primitive
23+ import Data.Primitive.PrimVar
2424import Data.Word (Word64 )
2525import Database.LSMTree.Internal.BlobRef (BlobRef , BlobSpan (.. ))
2626import qualified Database.LSMTree.Internal.BlobRef as BlobRef
@@ -66,7 +66,7 @@ data RunBuilder m h = RunBuilder {
6666 , runBuilderAcc :: ! (RunAcc (PrimState m ))
6767
6868 -- | The byte offset within the blob file for the next blob to be written.
69- , runBuilderBlobOffset :: ! (MutVar (PrimState m ) Word64 )
69+ , runBuilderBlobOffset :: ! (PrimVar (PrimState m ) Word64 )
7070
7171 -- | The (write mode) file handles.
7272 , runBuilderHandles :: {-# UNPACK #-} ! (ForRunFiles (ChecksumHandle (PrimState m ) h ))
9595 -> m (RunBuilder m h )
9696new fs hbio runBuilderFsPaths numEntries alloc = do
9797 runBuilderAcc <- ST. stToIO $ RunAcc. new numEntries alloc
98- runBuilderBlobOffset <- newMutVar 0
98+ runBuilderBlobOffset <- newPrimVar 0
9999
100100 runBuilderHandles <- traverse (makeHandle fs) (pathsForRunFiles runBuilderFsPaths)
101101
@@ -266,8 +266,8 @@ writeBlob ::
266266 -> m BlobSpan
267267writeBlob RunBuilder {.. } blob = do
268268 let size = sizeofBlob64 blob
269- offset <- readMutVar runBuilderBlobOffset
270- modifyMutVar' runBuilderBlobOffset (+ size)
269+ offset <- readPrimVar runBuilderBlobOffset
270+ modifyPrimVar runBuilderBlobOffset (+ size)
271271 let SerialisedBlob rb = blob
272272 let lbs = BSL. fromStrict $ RB. toByteString rb
273273 writeToHandle runBuilderHasFS (forRunBlob runBuilderHandles) lbs
@@ -342,7 +342,7 @@ writeIndexFinal RunBuilder {..} numEntries index =
342342-------------------------------------------------------------------------------}
343343
344344-- | Tracks the checksum of a (write mode) file handle.
345- data ChecksumHandle s h = ChecksumHandle ! (FS. Handle h ) ! (MutVar s CRC32C )
345+ data ChecksumHandle s h = ChecksumHandle ! (FS. Handle h ) ! (PrimVar s CRC32C )
346346
347347{-# SPECIALISE makeHandle ::
348348 HasFS IO h
@@ -356,7 +356,7 @@ makeHandle ::
356356makeHandle fs path =
357357 ChecksumHandle
358358 <$> FS. hOpen fs path (FS. WriteMode FS. MustBeNew )
359- <*> newMutVar CRC. initialCRC32C
359+ <*> newPrimVar CRC. initialCRC32C
360360
361361{-# SPECIALISE readChecksum ::
362362 ChecksumHandle RealWorld h
@@ -365,7 +365,7 @@ readChecksum ::
365365 PrimMonad m
366366 => ChecksumHandle (PrimState m ) h
367367 -> m CRC32C
368- readChecksum (ChecksumHandle _h checksum) = readMutVar checksum
368+ readChecksum (ChecksumHandle _h checksum) = readPrimVar checksum
369369
370370dropCache :: HasBlockIO m h -> ChecksumHandle (PrimState m ) h -> m ()
371371dropCache hbio (ChecksumHandle h _) = FS. hDropCacheAll hbio h
@@ -385,6 +385,6 @@ writeToHandle ::
385385 -> BSL. ByteString
386386 -> m ()
387387writeToHandle fs (ChecksumHandle h checksum) lbs = do
388- crc <- readMutVar checksum
388+ crc <- readPrimVar checksum
389389 (_, crc') <- CRC. hPutAllChunksCRC32C fs h lbs crc
390- writeMutVar checksum crc'
390+ writePrimVar checksum crc'
0 commit comments