{-# OPTIONS_GHC -cpp #-} module UHC.Light.Compiler.ConfigDefines ( mkB , GCVariant (..), gcVariant , useBoehmGC , sizeofWord, sizeofWordInBits, sizeofWordAsInteger, sizeofWordInLog , nodeNeedsForwarding , magicNumberHI , mpLib, MPLib (..) , sizeofFloat, sizeofDouble, sizeofCInt ) where import UHC.Light.Compiler.Opts.Base import Data.Word import Data.Char {-# LINE 18 "src/ehc/ConfigDefines.chs" #-} magicNumberHI :: [Word8] magicNumberHI = map (fromInteger . toInteger . fromEnum) "UHI1" {-# LINE 27 "src/ehc/ConfigDefines.chs" #-} mkB :: Int -> Bool mkB x = if x /= 0 then True else False {-# LINE 39 "src/ehc/ConfigDefines.chs" #-} #define USE_BOEHM_GC 0 data GCVariant = GCVariant_Boehm | GCVariant_Uhc deriving Eq gcVariant :: EHCOpts -> GCVariant gcVariant opts | ehcOptEmitExecBytecode opts = GCVariant_Uhc | mkB USE_BOEHM_GC = GCVariant_Boehm | otherwise = GCVariant_Uhc {-# LINE 56 "src/ehc/ConfigDefines.chs" #-} useBoehmGC :: EHCOpts -> Bool useBoehmGC opts = gcVariant opts == GCVariant_Boehm {-# LINE 61 "src/ehc/ConfigDefines.chs" #-} #define USE_LTM 1 #define USE_GMP 0 data MPLib = MPLib_LTM | MPLib_GMP deriving (Show,Eq) mpLib :: MPLib mpLib | mkB USE_GMP = MPLib_GMP | otherwise = MPLib_LTM {-# LINE 78 "src/ehc/ConfigDefines.chs" #-} #define SIZEOF_INTPTR_T 8 {-# LINE 82 "src/ehc/ConfigDefines.chs" #-} sizeofWord :: Int sizeofWord = SIZEOF_INTPTR_T sizeofWordInBits :: Int sizeofWordInBits = sizeofWord * 8 sizeofWordInLog :: Int sizeofWordInLog = if sizeofWord == 8 then 3 else 2 sizeofWordAsInteger :: Integer sizeofWordAsInteger = toInteger sizeofWord {-# LINE 100 "src/ehc/ConfigDefines.chs" #-} nodeNeedsForwarding :: EHCOpts -> Bool nodeNeedsForwarding opts = case gcVariant opts of GCVariant_Boehm -> False -- header only GCVariant_Uhc -> True -- header + 1 fld for forwarding {-# LINE 112 "src/ehc/ConfigDefines.chs" #-} #define SIZEOF_FLOAT 4 #define SIZEOF_DOUBLE 8 #define SIZEOF_INT 4 {-# LINE 118 "src/ehc/ConfigDefines.chs" #-} sizeofFloat :: Int sizeofFloat = SIZEOF_FLOAT sizeofDouble :: Int sizeofDouble = SIZEOF_DOUBLE sizeofCInt :: Int sizeofCInt = SIZEOF_INT