ghc-6.12.3: The GHC APISource codeContentsIndex
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) FunctionOrData
mkMachInt :: Integer -> Literal
mkMachWord :: Integer -> Literal
mkMachInt64 :: Integer -> Literal
mkMachWord64 :: Integer -> Literal
mkMachFloat :: Rational -> Literal
mkMachDouble :: Rational -> Literal
mkMachChar :: Char -> Literal
mkMachString :: String -> Literal
literalType :: Literal -> Type
hashLiteral :: Literal -> Int
litIsDupable :: Literal -> Bool
litIsTrivial :: Literal -> Bool
inIntRange :: Integer -> Bool
inWordRange :: Integer -> Bool
tARGET_MAX_INT :: Integer
inCharRange :: Char -> Bool
isZeroLit :: Literal -> Bool
litFitsInChar :: Literal -> Bool
word2IntLit :: Literal -> Literal
int2WordLit :: Literal -> Literal
narrow8IntLit :: Literal -> Literal
narrow16IntLit :: Literal -> Literal
narrow32IntLit :: Literal -> Literal
narrow8WordLit :: Literal -> Literal
narrow16WordLit :: Literal -> Literal
narrow32WordLit :: Literal -> Literal
char2IntLit :: Literal -> Literal
int2CharLit :: Literal -> Literal
float2IntLit :: Literal -> Literal
int2FloatLit :: Literal -> Literal
double2IntLit :: Literal -> Literal
int2DoubleLit :: Literal -> Literal
nullAddrLit :: Literal
float2DoubleLit :: Literal -> Literal
double2FloatLit :: Literal -> Literal
Main data type
data Literal Source

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) FunctionOrData

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 -> LiteralSource
Creates a Literal of type Int#
mkMachWord :: Integer -> LiteralSource
Creates a Literal of type Word#
mkMachInt64 :: Integer -> LiteralSource
Creates a Literal of type Int64#
mkMachWord64 :: Integer -> LiteralSource
Creates a Literal of type Word64#
mkMachFloat :: Rational -> LiteralSource
Creates a Literal of type Float#
mkMachDouble :: Rational -> LiteralSource
Creates a Literal of type Double#
mkMachChar :: Char -> LiteralSource
Creates a Literal of type Char#
mkMachString :: String -> LiteralSource
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
literalType :: Literal -> TypeSource
Find the Haskell Type the literal occupies
hashLiteral :: Literal -> IntSource
Predicates on Literals and their contents
litIsDupable :: Literal -> BoolSource
True if code space does not go bad if we duplicate this literal Currently we treat it just like litIsTrivial
litIsTrivial :: Literal -> BoolSource
True if there is absolutely no penalty to duplicating the literal. False principally of strings
inIntRange :: Integer -> BoolSource
inWordRange :: Integer -> BoolSource
tARGET_MAX_INT :: IntegerSource
inCharRange :: Char -> BoolSource
isZeroLit :: Literal -> BoolSource
Tests whether the literal represents a zero of whatever type it is
litFitsInChar :: Literal -> BoolSource
Coercions
word2IntLit :: Literal -> LiteralSource
int2WordLit :: Literal -> LiteralSource
narrow8IntLit :: Literal -> LiteralSource
narrow16IntLit :: Literal -> LiteralSource
narrow32IntLit :: Literal -> LiteralSource
narrow8WordLit :: Literal -> LiteralSource
narrow16WordLit :: Literal -> LiteralSource
narrow32WordLit :: Literal -> LiteralSource
char2IntLit :: Literal -> LiteralSource
int2CharLit :: Literal -> LiteralSource
float2IntLit :: Literal -> LiteralSource
int2FloatLit :: Literal -> LiteralSource
double2IntLit :: Literal -> LiteralSource
int2DoubleLit :: Literal -> LiteralSource
nullAddrLit :: LiteralSource
float2DoubleLit :: Literal -> LiteralSource
double2FloatLit :: Literal -> LiteralSource
Produced by Haddock version 2.6.1