X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FbasicTypes%2FLiteral.lhs;h=e83ea9db74e006ea9b6e9305f8678d7c648074e9;hb=9d7da331989abcd1844e9d03b8d1e4163796fa85;hp=01b21b12ee4cb7add0512666a44501b1ccbf25b9;hpb=423d477bfecd490de1449c59325c8776f91d7aac;p=ghc-hetmet.git diff --git a/ghc/compiler/basicTypes/Literal.lhs b/ghc/compiler/basicTypes/Literal.lhs index 01b21b1..e83ea9d 100644 --- a/ghc/compiler/basicTypes/Literal.lhs +++ b/ghc/compiler/basicTypes/Literal.lhs @@ -7,14 +7,14 @@ module Literal ( Literal(..) -- Exported to ParseIface , mkMachInt, mkMachWord - , mkMachInt64, mkMachWord64 + , mkMachInt64, mkMachWord64, mkStringLit , litSize , litIsDupable, litIsTrivial - , literalType, + , literalType , hashLiteral , inIntRange, inWordRange, tARGET_MAX_INT, inCharRange - , isZeroLit, + , isZeroLit , word2IntLit, int2WordLit , narrow8IntLit, narrow16IntLit, narrow32IntLit @@ -94,7 +94,11 @@ data Literal = ------------------ -- First the primitive guys MachChar Char -- Char# At least 31 bits - | MachStr FastString + + | MachStr FastString -- A string-literal: stored and emitted + -- UTF-8 encoded, we'll arrange to decode it + -- at runtime. Also emitted with a '\0' + -- terminator. | MachNullAddr -- the NULL pointer, the only pointer value -- that can be represented as a Literal. @@ -204,6 +208,9 @@ mkMachWord x = -- ASSERT2( inWordRange x, integer x ) mkMachInt64 x = MachInt64 x mkMachWord64 x = MachWord64 x +mkStringLit :: String -> Literal +mkStringLit s = MachStr (mkFastString s) -- stored UTF-8 encoded + inIntRange, inWordRange :: Integer -> Bool inIntRange x = x >= tARGET_MIN_INT && x <= tARGET_MAX_INT inWordRange x = x >= 0 && x <= tARGET_MAX_WORD