ghc-7.0.3: The GHC API

SPARC.Base

Description

Bits and pieces on the bottom of the module dependency tree. Also import the required constants, so we know what we're using.

In the interests of cross-compilation, we want to free ourselves from the autoconf generated modules like main/Constants

Synopsis

- wordLength :: Int
- wordLengthInBits :: Int
- spillAreaLength :: Int
- spillSlotSize :: Int
- extraStackArgsHere :: Int
- fits13Bits :: Integral a => a -> Bool
- is32BitInteger :: Integer -> Bool
- largeOffsetError :: Integral a => a -> b

# Documentation

wordLength :: Int

wordLengthInBits :: Int

spillAreaLength :: Int

spillSlotSize :: Int

We need 8 bytes because our largest registers are 64 bit.

extraStackArgsHere :: Int

We (allegedly) put the first six C-call arguments in registers; where do we start putting the rest of them?

fits13Bits :: Integral a => a -> Bool

Check whether an offset is representable with 13 bits.

is32BitInteger :: Integer -> Bool

Check whether an integer will fit in 32 bits. A CmmInt is intended to be truncated to the appropriate number of bits, so here we truncate it to Int64. This is important because e.g. -1 as a CmmInt might be either -1 or 18446744073709551615.

largeOffsetError :: Integral a => a -> b

Sadness.