Safe Haskell | None |
---|---|
Language | Haskell98 |
- data Literal
- mkMachInt :: DynFlags -> Integer -> Literal
- mkMachWord :: DynFlags -> Integer -> Literal
- mkMachInt64 :: Integer -> Literal
- mkMachWord64 :: Integer -> Literal
- mkMachFloat :: Rational -> Literal
- mkMachDouble :: Rational -> Literal
- mkMachChar :: Char -> Literal
- mkMachString :: String -> Literal
- mkLitInteger :: Integer -> Type -> Literal
- literalType :: Literal -> Type
- hashLiteral :: Literal -> Int
- absentLiteralOf :: TyCon -> Maybe Literal
- pprLiteral :: (SDoc -> SDoc) -> Literal -> SDoc
- litIsDupable :: DynFlags -> Literal -> Bool
- litIsTrivial :: Literal -> Bool
- litIsLifted :: Literal -> Bool
- inIntRange :: DynFlags -> Integer -> Bool
- inWordRange :: DynFlags -> Integer -> Bool
- tARGET_MAX_INT :: DynFlags -> Integer
- inCharRange :: Char -> Bool
- isZeroLit :: Literal -> Bool
- litFitsInChar :: Literal -> Bool
- word2IntLit :: DynFlags -> Literal -> Literal
- int2WordLit :: DynFlags -> 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
So-called Literal
s are one of:
MachChar Char |
|
MachStr ByteString | A string-literal: stored and emitted
UTF-8 encoded, we'll arrange to decode it
at runtime. Also emitted with a |
MachNullAddr | The |
MachInt Integer |
|
MachInt64 Integer |
|
MachWord Integer |
|
MachWord64 Integer |
|
MachFloat Rational |
|
MachDouble Rational |
|
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
|
LitInteger Integer Type |
Creating Literals
mkMachInt64 :: Integer -> Literal Source
Creates a Literal
of type Int64#
mkMachWord64 :: Integer -> Literal Source
Creates a Literal
of type Word64#
mkMachFloat :: Rational -> Literal Source
Creates a Literal
of type Float#
mkMachDouble :: Rational -> Literal Source
Creates a Literal
of type Double#
mkMachChar :: Char -> Literal Source
Creates a Literal
of type Char#
mkMachString :: String -> Literal Source
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
mkLitInteger :: Integer -> Type -> Literal Source
Operations on Literals
literalType :: Literal -> Type Source
Find the Haskell Type
the literal occupies
hashLiteral :: Literal -> Int Source
absentLiteralOf :: TyCon -> Maybe Literal Source
Predicates on Literals and their contents
litIsDupable :: DynFlags -> Literal -> Bool Source
True if code space does not go bad if we duplicate this literal
Currently we treat it just like litIsTrivial
litIsTrivial :: Literal -> Bool Source
True if there is absolutely no penalty to duplicating the literal. False principally of strings
litIsLifted :: Literal -> Bool Source
inIntRange :: DynFlags -> Integer -> Bool Source
inWordRange :: DynFlags -> Integer -> Bool Source
tARGET_MAX_INT :: DynFlags -> Integer Source
inCharRange :: Char -> Bool Source
isZeroLit :: Literal -> Bool Source
Tests whether the literal represents a zero of whatever type it is
litFitsInChar :: Literal -> Bool Source
Coercions
word2IntLit :: DynFlags -> Literal -> Literal Source
int2WordLit :: DynFlags -> Literal -> Literal Source
narrow8IntLit :: Literal -> Literal Source
narrow16IntLit :: Literal -> Literal Source
narrow32IntLit :: Literal -> Literal Source
narrow8WordLit :: Literal -> Literal Source
narrow16WordLit :: Literal -> Literal Source
narrow32WordLit :: Literal -> Literal Source
char2IntLit :: Literal -> Literal Source
int2CharLit :: Literal -> Literal Source
float2IntLit :: Literal -> Literal Source
int2FloatLit :: Literal -> Literal Source
double2IntLit :: Literal -> Literal Source
int2DoubleLit :: Literal -> Literal Source
float2DoubleLit :: Literal -> Literal Source
double2FloatLit :: Literal -> Literal Source