diff --git a/external-stg-interpreter/lib/Stg/Interpreter.hs b/external-stg-interpreter/lib/Stg/Interpreter.hs index ac9b929..7f36f2e 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter.hs @@ -10,6 +10,7 @@ import Foreign.Ptr import Control.Concurrent import Control.Concurrent.MVar import qualified Control.Concurrent.Chan.Unagi.Bounded as Unagi +import Control.Monad (forM_, forM, unless, when) import Control.Monad.State.Strict import Control.Exception import qualified Data.Primitive.ByteArray as BA diff --git a/external-stg-interpreter/lib/Stg/Interpreter/Base.hs b/external-stg-interpreter/lib/Stg/Interpreter/Base.hs index f56e611..bbe4969 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/Base.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/Base.hs @@ -4,6 +4,7 @@ module Stg.Interpreter.Base where import Data.Word import Foreign.Ptr import Foreign.C.Types +import Control.Monad (unless, forM, forM_) import Control.Monad.State.Strict import Data.List (foldl') import Data.Set (Set) diff --git a/external-stg-interpreter/lib/Stg/Interpreter/Debug.hs b/external-stg-interpreter/lib/Stg/Interpreter/Debug.hs index 991e77e..eae9c14 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/Debug.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/Debug.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings #-} module Stg.Interpreter.Debug where +import Control.Monad (forM_, unless) import qualified GHC.Exts as Exts import qualified Data.Set as Set import qualified Data.IntMap as IntMap diff --git a/external-stg-interpreter/lib/Stg/Interpreter/Debugger.hs b/external-stg-interpreter/lib/Stg/Interpreter/Debugger.hs index d83ed2d..c39a018 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/Debugger.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/Debugger.hs @@ -2,6 +2,7 @@ module Stg.Interpreter.Debugger where import GHC.Stack +import Control.Monad (unless) import Control.Monad.State import qualified Data.Set as Set import qualified Data.Map as Map diff --git a/external-stg-interpreter/lib/Stg/Interpreter/Debugger/Internal.hs b/external-stg-interpreter/lib/Stg/Interpreter/Debugger/Internal.hs index 3c6c85b..6d37b96 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/Debugger/Internal.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/Debugger/Internal.hs @@ -3,6 +3,7 @@ module Stg.Interpreter.Debugger.Internal where import Text.Printf import qualified Text.Read as Text +import Control.Monad (forM_, unless) import Control.Monad.State import qualified Data.List as List import qualified Data.Set as Set diff --git a/external-stg-interpreter/lib/Stg/Interpreter/Debugger/Region.hs b/external-stg-interpreter/lib/Stg/Interpreter/Debugger/Region.hs index ca5705c..ab6b17f 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/Debugger/Region.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/Debugger/Region.hs @@ -2,6 +2,7 @@ module Stg.Interpreter.Debugger.Region where import Text.Printf +import Control.Monad (forM_, unless, when) import Control.Monad.State import qualified Data.List as List import qualified Data.Set as Set diff --git a/external-stg-interpreter/lib/Stg/Interpreter/FFI.hs b/external-stg-interpreter/lib/Stg/Interpreter/FFI.hs index f091fcd..322f752 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/FFI.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/FFI.hs @@ -41,6 +41,7 @@ import Data.IntMap (IntMap) import qualified Data.IntMap as IntMap import GHC.Stack +import Control.Monad (zipWithM) import Control.Monad.State.Strict import Control.Concurrent.MVar @@ -503,4 +504,4 @@ buildCWrapperHsTypeMap mods = do liftIO $ do putStrLn $ "CWrappers:" forM_ (Map.toList m) $ \(k, v) -> print k >> print v - -} \ No newline at end of file + -} diff --git a/external-stg-interpreter/lib/Stg/Interpreter/GC.hs b/external-stg-interpreter/lib/Stg/Interpreter/GC.hs index e53ad63..22f44cf 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/GC.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/GC.hs @@ -2,6 +2,7 @@ module Stg.Interpreter.GC where import Text.Printf +import Control.Monad (unless, forM_, when) import Control.Monad.State import qualified Data.Map as Map import Data.IntMap (IntMap) diff --git a/external-stg-interpreter/lib/Stg/Interpreter/GC/GCRef.hs b/external-stg-interpreter/lib/Stg/Interpreter/GC/GCRef.hs index 17ce6c8..f5710bd 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/GC/GCRef.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/GC/GCRef.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, FlexibleInstances #-} module Stg.Interpreter.GC.GCRef where +import Control.Monad (forM_) import Control.Monad.State import Foreign.Ptr diff --git a/external-stg-interpreter/lib/Stg/Interpreter/GC/LiveDataAnalysis.hs b/external-stg-interpreter/lib/Stg/Interpreter/GC/LiveDataAnalysis.hs index cd1df95..62b84fe 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/GC/LiveDataAnalysis.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/GC/LiveDataAnalysis.hs @@ -3,6 +3,7 @@ module Stg.Interpreter.GC.LiveDataAnalysis where import GHC.Generics +import Control.Monad (foldM, forM_, unless) import Control.Monad.State import qualified Data.IntSet as IntSet import qualified Data.Map as Map diff --git a/external-stg-interpreter/lib/Stg/Interpreter/GC/RetainerAnalysis.hs b/external-stg-interpreter/lib/Stg/Interpreter/GC/RetainerAnalysis.hs index a06687e..3842781 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/GC/RetainerAnalysis.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/GC/RetainerAnalysis.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings #-} module Stg.Interpreter.GC.RetainerAnalysis where +import Control.Monad (unless) import Control.Monad.State import Data.Set (Set) import qualified Data.Set as Set diff --git a/external-stg-interpreter/lib/Stg/Interpreter/IOManager.hs b/external-stg-interpreter/lib/Stg/Interpreter/IOManager.hs index 0f8ef7a..79ead9c 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/IOManager.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/IOManager.hs @@ -2,6 +2,7 @@ {-# LANGUAGE QuasiQuotes, TemplateHaskell #-} module Stg.Interpreter.IOManager where +import Control.Monad (forM_, unless, when) import Control.Monad.State import Data.IntMap (IntMap) import qualified Data.IntMap as IntMap diff --git a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Addr.hs b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Addr.hs index 76f8967..adb7deb 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Addr.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Addr.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms, Strict #-} module Stg.Interpreter.PrimOp.Addr where +import Control.Monad import Control.Monad.State import Data.Char import Data.Word diff --git a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/ByteArray.hs b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/ByteArray.hs index f8aefa5..6f6dfb3 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/ByteArray.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/ByteArray.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms #-} module Stg.Interpreter.PrimOp.ByteArray where +import Control.Monad (when) import Data.Bits import Data.Int import Data.Word diff --git a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Concurrency.hs b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Concurrency.hs index 4191d9f..daf5001 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Concurrency.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Concurrency.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms #-} module Stg.Interpreter.PrimOp.Concurrency where +import Control.Monad import Control.Monad.State import qualified Data.ByteString.Char8 as BS8 import qualified Data.IntMap as IntMap diff --git a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/DelayWait.hs b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/DelayWait.hs index d1a5906..a4dedc9 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/DelayWait.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/DelayWait.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms #-} module Stg.Interpreter.PrimOp.DelayWait where +import Control.Monad import Control.Monad.State import Data.Time.Clock import Data.Fixed diff --git a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Double.hs b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Double.hs index 8b8ed73..cc66cb7 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Double.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Double.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms, MagicHash, UnboxedTuples, BangPatterns, Strict #-} +{-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms, MagicHash, UnboxedTuples, BangPatterns, Strict, CPP #-} module Stg.Interpreter.PrimOp.Double where import GHC.Word @@ -123,6 +123,11 @@ evalPrimOp fallback op args t tc = case (op, args) of ( "decodeDouble_Int64#", [DoubleV (D# x)]) -> do -- NOTE: map back to GHC primop let !(# a, b #) = decodeDouble_Int64# x - pure [Int64V (I# a), IntV (I# b)] +#if MIN_VERSION_base(4,18,0) + let a' = int64ToInt# a +#else + let a' = a +#endif + pure [Int64V (I# a'), IntV (I# b)] _ -> fallback op args t tc diff --git a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Exceptions.hs b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Exceptions.hs index 9b7cca8..b23e88c 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Exceptions.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/Exceptions.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms #-} module Stg.Interpreter.PrimOp.Exceptions where +import Control.Monad (unless, when) import Control.Monad.State import Stg.Syntax diff --git a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/STM.hs b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/STM.hs index 11f4bc2..ade6cfe 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/STM.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/PrimOp/STM.hs @@ -2,6 +2,7 @@ module Stg.Interpreter.PrimOp.STM where import GHC.Stack +import Control.Monad (forM_, when) import Control.Monad.State import Data.IntMap (IntMap) import qualified Data.IntMap as IntMap @@ -44,7 +45,7 @@ TODO: - read paper from 6.1 transaction logs Q: is there a new tlog entry for each tvar operation or is it one entry per tvar? -A: +A: Q: what is the difference between STM and SQL transactions? is it the value sampling? @@ -500,4 +501,4 @@ primop WriteTVarOp "writeTVar#" GenPrimOp primop SameTVarOp "sameTVar#" GenPrimOp TVar# s a -> TVar# s a -> Int# --} \ No newline at end of file +-} diff --git a/external-stg-interpreter/lib/Stg/Interpreter/Rts.hs b/external-stg-interpreter/lib/Stg/Interpreter/Rts.hs index a9b2a41..a217c59 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/Rts.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/Rts.hs @@ -2,6 +2,7 @@ module Stg.Interpreter.Rts (initRtsSupport, extStgRtsSupportModule, globalStoreSymbols) where import GHC.Stack +import Control.Monad (forM_) import Control.Monad.State import Control.Concurrent.MVar diff --git a/external-stg-interpreter/lib/Stg/Interpreter/ThreadScheduler.hs b/external-stg-interpreter/lib/Stg/Interpreter/ThreadScheduler.hs index e436b20..b16dc92 100644 --- a/external-stg-interpreter/lib/Stg/Interpreter/ThreadScheduler.hs +++ b/external-stg-interpreter/lib/Stg/Interpreter/ThreadScheduler.hs @@ -1,6 +1,7 @@ {-# LANGUAGE RecordWildCards, LambdaCase, OverloadedStrings, PatternSynonyms #-} module Stg.Interpreter.ThreadScheduler where +import Control.Monad (forM_, when) import Control.Monad.State import Data.IntMap (IntMap) import qualified Data.IntMap as IntMap diff --git a/stack-ghc-9.6.yaml b/stack-ghc-9.6.yaml new file mode 100644 index 0000000..6eb4be6 --- /dev/null +++ b/stack-ghc-9.6.yaml @@ -0,0 +1,18 @@ +resolver: nightly-2023-07-17 + +packages: + - 'external-stg-syntax' + - 'external-stg' + - 'external-stg-interpreter' +# - 'lambda' +# - 'external-stg-compiler' + +extra-deps: + - github: luc-tielen/souffle-haskell + commit: bcd7e3c058c9036d8495cf114520663917b7ac81 + - github: david-christiansen/final-pretty-printer + commit: 048e8fa2d8b2b7a6f9e4e209db4f67361321eec8 + - inline-c-0.9.1.8@sha256:88ad57e7e08ecdfd18c2468019650aeb0a87da189ecb5891d6873e28162bc46f,3303 + - ansi-wl-pprint-0.6.9 # See: https://github.com/fpco/inline-c/issues/144 + +allow-newer: true