@@ -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 
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