@@ -33,7 +33,7 @@ import Data.Data (Data)
3333import Data.HashMap.Strict (HashMap )
3434import Data.HashMap.Strict qualified as HM
3535import Data.IORef (IORef , modifyIORef' , newIORef , readIORef )
36- import Foreign (ForeignPtr , finalizeForeignPtr , newForeignPtr , withForeignPtr )
36+ import Foreign (ForeignPtr , Int64 , finalizeForeignPtr , newForeignPtr , withForeignPtr )
3737import Foreign qualified
3838import Foreign.C qualified as C
3939import Foreign.C.Types (CSize (.. ))
@@ -52,6 +52,7 @@ data KoreSymbol
5252data KoreError
5353data Block
5454type SizeT = CSize
55+ type Int64T = Foreign. Int64
5556
5657type KorePatternPtr = ForeignPtr KorePattern
5758type KoreSymbolPtr = ForeignPtr KoreSymbol
@@ -104,6 +105,7 @@ data API = API
104105 , simplifyBool :: KorePatternPtr -> IO (Either LlvmError Bool )
105106 , simplify :: KorePatternPtr -> KoreSortPtr -> IO (Either LlvmError ByteString )
106107 , collect :: IO ()
108+ , munmap :: IO ()
107109 , mutex :: MVar ()
108110 }
109111
@@ -118,7 +120,7 @@ withDLib dlib = Linker.withDL dlib [Linker.RTLD_LAZY]
118120
119121runLLVM :: API -> LLVM a -> IO a
120122runLLVM api (LLVM m) =
121- withMVar api. mutex $ const $ runReaderT m api
123+ withMVar api. mutex $ const ( runReaderT m api <* api . collect)
122124
123125mkAPI :: Linker. DL -> IO API
124126mkAPI dlib = flip runReaderT dlib $ do
@@ -274,6 +276,7 @@ mkAPI dlib = flip runReaderT dlib $ do
274276 pure $ Right result
275277 else Left . LlvmError <$> errorMessage errPtr
276278
279+ munmap <- resetMunmapAllArenas -- HACK. Adjust name after llvm-backend dependency upgrade
277280 mutableBytesEnabled <-
278281 kllvmMutableBytesEnabled `catch` \ (_ :: IOException ) -> pure (pure 0 )
279282 liftIO $
@@ -283,7 +286,7 @@ mkAPI dlib = flip runReaderT dlib $ do
283286 " [Warn] Using an LLVM backend compiled with --llvm-mutable-bytes (unsound byte array semantics)"
284287
285288 mutex <- liftIO $ newMVar ()
286- pure API {patt, symbol, sort, simplifyBool, simplify, collect, mutex}
289+ pure API {patt, symbol, sort, simplifyBool, simplify, collect, munmap, mutex}
287290
288291ask :: LLVM API
289292ask = LLVM Reader. ask
0 commit comments