ghc-6.10.1: The GHC APIContentsIndex
Literal
Contents
Main data type
Creating Literals
Operations on Literals
Predicates on Literals and their contents
Coercions
Synopsis
data Literal
= MachChar Char
| MachStr FastString
| MachNullAddr
| MachInt Integer
| MachInt64 Integer
| MachWord Integer
| MachWord64 Integer
| MachFloat Rational
| MachDouble Rational
| MachLabel FastString (Maybe Int)
mkMachInt :: Integer -> Literal
mkMachWord :: Integer -> Literal
mkMachInt64 :: Integer -> Literal
mkMachWord64 :: Integer -> Literal
mkMachFloat :: Rational -> Literal
mkMachDouble :: Rational -> Literal
mkMachChar :: Char -> Literal
mkMachString :: String -> Literal
litSize :: Literal -> Int
literalType :: Literal -> Type
hashLiteral :: Literal -> Int
litIsDupable :: Literal -> Bool
litIsTrivial :: Literal -> Bool
inWordRange :: Integer -> Bool
tARGET_MAX_INT :: Integer
inCharRange :: Char -> Bool
isZeroLit :: Literal -> Bool
litFitsInChar :: Literal -> Bool
int2WordLit :: Literal -> Literal
nullAddrLit :: Literal
Main data type
data Literal

So-called Literals are one of:

  • An unboxed (machine) literal (MachInt, MachFloat, etc.), which is presumed to be surrounded by appropriate constructors (Int#, etc.), so that the overall thing makes sense.
  • The literal derived from the label mentioned in a "foreign label" declaration (MachLabel)
Constructors
MachChar CharChar# - at least 31 bits. Create with mkMachChar
MachStr FastStringA string-literal: stored and emitted UTF-8 encoded, we'll arrange to decode it at runtime. Also emitted with a '\0' terminator. Create with mkMachString
MachNullAddrThe NULL pointer, the only pointer value that can be represented as a Literal. Create with nullAddrLit
MachInt IntegerInt# - at least WORD_SIZE_IN_BITS bits. Create with mkMachInt
MachInt64 IntegerInt64# - at least 64 bits. Create with mkMachInt64
MachWord IntegerWord# - at least WORD_SIZE_IN_BITS bits. Create with mkMachWord
MachWord64 IntegerWord64# - at least 64 bits. Create with mkMachWord64
MachFloat RationalFloat#. Create with mkMachFloat
MachDouble RationalDouble#. Create with mkMachDouble
MachLabel FastString (Maybe Int)

A label literal. Parameters:

1) The name of the symbol mentioned in the declaration

2) The size (in bytes) of the arguments the label expects. Only applicable with stdcall labels. Just x => <x> will be appended to label name when emitting assembly.

show/hide Instances
Creating Literals
mkMachInt :: Integer -> Literal
Creates a Literal of type Int#
mkMachWord :: Integer -> Literal
Creates a Literal of type Word#
mkMachInt64 :: Integer -> Literal
Creates a Literal of type Int64#
mkMachWord64 :: Integer -> Literal
Creates a Literal of type Word64#
mkMachFloat :: Rational -> Literal
Creates a Literal of type Float#
mkMachDouble :: Rational -> Literal
Creates a Literal of type Double#
mkMachChar :: Char -> Literal
Creates a Literal of type Char#
mkMachString :: String -> Literal
Creates a Literal of type Addr#, which is appropriate for passing to e.g. some of the "error" functions in GHC.Err such as GHC.Err.runtimeError
Operations on Literals
litSize :: Literal -> Int
Finds a nominal size of a string literal. Every literal has size at least 1
literalType :: Literal -> Type
Find the Haskell Type the literal occupies
hashLiteral :: Literal -> Int
Predicates on Literals and their contents
litIsDupable :: Literal -> Bool
True if code space does not go bad if we duplicate this literal Currently we treat it just like litIsTrivial
litIsTrivial :: Literal -> Bool
True if there is absolutely no penalty to duplicating the literal. False principally of strings
inWordRange :: Integer -> Bool
tARGET_MAX_INT :: Integer
inCharRange :: Char -> Bool
isZeroLit :: Literal -> Bool
Tests whether the literal represents a zero of whatever type it is
litFitsInChar :: Literal -> Bool
Coercions
int2WordLit :: Literal -> Literal
nullAddrLit :: Literal
Produced by Haddock version 2.3.0