module UHC.Light.Compiler.CodeGen.BuiltinPrims ( PrimitiveNeedsEval (..), lookupPrimNeedsEval ) where import UHC.Light.Compiler.Base.HsName import UHC.Light.Compiler.Base.Common import UHC.Light.Compiler.Opts import UHC.Light.Compiler.CodeGen.BasicAnnot import UHC.Light.Compiler.Base.HsName.Builtin import qualified Data.Map as Map import qualified UHC.Util.FastSeq as Seq import UHC.Util.Pretty import UHC.Util.Utils {-# LINE 28 "src/ehc/CodeGen/BuiltinPrims.chs" #-} data PrimitiveNeedsEval = Prim { primArgNeedEval :: ![Bool] -- default: True , primResNeedEval :: ! Bool -- default: False } lookupPrimNeedsEval :: {- Backend -> -} String -> Maybe PrimitiveNeedsEval lookupPrimNeedsEval {- backend -} name = Map.lookup name primsNeedsEval {- >>= Map.lookup backend -} {-# LINE 43 "src/ehc/CodeGen/BuiltinPrims.chs" #-} primsNeedsEval :: Map.Map String ({- Map.Map Backend -} PrimitiveNeedsEval) primsNeedsEval = Map.fromList [ ( "primCatchException" , Prim [False,False] False ) , ( "primThrowException" , Prim [False] False ) , ( "primNewArray" , Prim [True,False] False ) , ( "primIndexArray" , Prim [True,True] True ) , ( "primWriteArray" , Prim [True,True,False] False ) -- , ( "primReadMutVar" , Prim [True,True] True ) , ( "primNewMutVar" , Prim [False,True] False ) , ( "primWriteMutVar" , Prim [True,False,True] False ) ]