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
data PrimitiveNeedsEval
= Prim
{ primArgNeedEval :: ![Bool]
, primResNeedEval :: ! Bool
}
lookupPrimNeedsEval :: String -> Maybe PrimitiveNeedsEval
lookupPrimNeedsEval name = Map.lookup name primsNeedsEval
primsNeedsEval :: Map.Map String ( 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 )
, ( "primNewMutVar" , Prim [False,True] False )
, ( "primWriteMutVar" , Prim [True,False,True] False )
]