[project @ 1999-02-17 15:57:20 by simonm]
[ghc-hetmet.git] / ghc / compiler / basicTypes / Unique.lhs
index 040bf5f..0f65b85 100644 (file)
@@ -1,4 +1,6 @@
-
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
+%
 
 @Uniques@ are used to distinguish entities in the compiler (@Ids@,
 @Classes@, etc.) from each other.  Thus, @Uniques@ are the basic
@@ -17,13 +19,14 @@ module Unique (
        Unique, Uniquable(..),
        u2i,                            -- hack: used in UniqFM
 
-       pprUnique, pprUnique10, showUnique,
+       pprUnique, pprUnique10,
 
        mkUnique,                       -- Used in UniqSupply
        mkUniqueGrimily,                -- Used in UniqSupply only!
+       getKey,                         -- Used in Var only!
 
        incrUnique,                     -- Used for renumbering
-       initTyVarUnique, mkTyVarUnique,
+       initTyVarUnique,
        initTidyUniques,
 
        -- now all the built-in Uniques (and functions to make them)
@@ -31,7 +34,9 @@ module Unique (
        mkAlphaTyVarUnique,
        mkPrimOpIdUnique,
        mkTupleDataConUnique,
+       mkUbxTupleDataConUnique,
        mkTupleTyConUnique,
+       mkUbxTupleTyConUnique,
 
        getBuiltinUniques, mkBuiltinUnique,
        mkPseudoUnique1, mkPseudoUnique2, mkPseudoUnique3,
@@ -40,24 +45,25 @@ module Unique (
        addrDataConKey,
        addrPrimTyConKey,
        addrTyConKey,
-       andandIdKey,
        appendIdKey,
        arrayPrimTyConKey,
        assertIdKey,
        augmentIdKey,
+       bindIOIdKey,
        boolTyConKey,
        boundedClassKey,
-       buildDataConKey,
+       boxedConKey,
        buildIdKey,
        byteArrayPrimTyConKey,
+       byteArrayTyConKey,
        cCallableClassKey,
        cReturnableClassKey,
        charDataConKey,
        charPrimTyConKey,
        charTyConKey,
-       coerceIdKey,
-       composeIdKey,
+       concatIdKey,
        consDataConKey,
+       deRefStablePtrIdKey,
        doubleDataConKey,
        doublePrimTyConKey,
        doubleTyConKey,
@@ -68,10 +74,10 @@ module Unique (
        enumFromToClassOpKey,
        eqClassKey,
        eqClassOpKey,
-       eqDataConKey,
        errorIdKey,
-       evalClassKey,
        falseDataConKey,
+       failMClassOpKey,
+       filterIdKey,
        floatDataConKey,
        floatPrimTyConKey,
        floatTyConKey,
@@ -81,7 +87,6 @@ module Unique (
        foreignObjDataConKey,
        foreignObjPrimTyConKey,
        foreignObjTyConKey,
-       forkIdKey,
        fractionalClassKey,
        fromEnumClassOpKey,
        fromIntClassOpKey,
@@ -90,37 +95,46 @@ module Unique (
        funTyConKey,
        functorClassKey,
        geClassOpKey,
-       gtDataConKey,
-       inlineIdKey,
        intDataConKey,
        intPrimTyConKey,
        intTyConKey,
-       integerDataConKey,
+       int8TyConKey,
+       int8DataConKey,
+       int16TyConKey,
+       int16DataConKey,
+       int32TyConKey,
+       int32DataConKey,
+       int64DataConKey,
+       int64PrimTyConKey,
+       int64TyConKey,
+       smallIntegerDataConKey,
+       largeIntegerDataConKey,
        integerMinusOneIdKey,
        integerPlusOneIdKey,
        integerPlusTwoIdKey,
+       int2IntegerIdKey,
+       addr2IntegerIdKey,
        integerTyConKey,
        integerZeroIdKey,
        integralClassKey,
        irrefutPatErrorIdKey,
        ixClassKey,
-       lexIdKey,
-       liftDataConKey,
-       liftTyConKey,
        listTyConKey,
-       ltDataConKey,
        mainKey,
+       makeStablePtrIdKey,
+       mapIdKey,
        minusClassOpKey,
        monadClassKey,
        monadPlusClassKey,
-       monadZeroClassKey,
        mutableArrayPrimTyConKey,
        mutableByteArrayPrimTyConKey,
+       mutableByteArrayTyConKey,
+       mutVarPrimTyConKey,
        nilDataConKey,
        noMethodBindingErrorIdKey,
        nonExhaustiveGuardsErrorIdKey,
-       notIdKey,
        numClassKey,
+       anyBoxConKey,
        ordClassKey,
        orderingTyConKey,
        otherwiseIdKey,
@@ -132,7 +146,6 @@ module Unique (
        ratioTyConKey,
        rationalTyConKey,
        readClassKey,
-       readParenIdKey,
        realClassKey,
        realFloatClassKey,
        realFracClassKey,
@@ -141,100 +154,59 @@ module Unique (
        recConErrorIdKey,
        recSelErrIdKey,
        recUpdErrorIdKey,
-       return2GMPsDataConKey,
-       return2GMPsTyConKey,
-       returnIntAndGMPDataConKey,
-       returnIntAndGMPTyConKey,
        returnMClassOpKey,
-       seqIdKey,
        showClassKey,
-       showParenIdKey,
-       showSpaceIdKey,
-       showStringIdKey,
-       stTyConKey,
-       stDataConKey,
        ioTyConKey,
        ioDataConKey,
-       ioResultTyConKey,
-       ioOkDataConKey,
-       ioFailDataConKey,
        stablePtrDataConKey,
        stablePtrPrimTyConKey,
        stablePtrTyConKey,
-       stateAndAddrPrimDataConKey,
-       stateAndAddrPrimTyConKey,
-       stateAndArrayPrimDataConKey,
-       stateAndArrayPrimTyConKey,
-       stateAndByteArrayPrimDataConKey,
-       stateAndByteArrayPrimTyConKey,
-       stateAndCharPrimDataConKey,
-       stateAndCharPrimTyConKey,
-       stateAndDoublePrimDataConKey,
-       stateAndDoublePrimTyConKey,
-       stateAndFloatPrimDataConKey,
-       stateAndFloatPrimTyConKey,
-       stateAndForeignObjPrimDataConKey,
-       stateAndForeignObjPrimTyConKey,
-       stateAndIntPrimDataConKey,
-       stateAndIntPrimTyConKey,
-       stateAndMutableArrayPrimDataConKey,
-       stateAndMutableArrayPrimTyConKey,
-       stateAndMutableByteArrayPrimDataConKey,
-       stateAndMutableByteArrayPrimTyConKey,
-       stateAndPtrPrimDataConKey,
-       stateAndPtrPrimTyConKey,
-       stateAndStablePtrPrimDataConKey,
-       stateAndStablePtrPrimTyConKey,
-       stateAndSynchVarPrimDataConKey,
-       stateAndSynchVarPrimTyConKey,
-       stateAndWordPrimDataConKey,
-       stateAndWordPrimTyConKey,
-       stateDataConKey,
-       stRetDataConKey,
+       stableNameDataConKey,
+       stableNamePrimTyConKey,
+       stableNameTyConKey,
+
        statePrimTyConKey,
-       stateTyConKey,
-       stRetTyConKey,
-       synchVarPrimTyConKey,
+       typeConKey,
+       kindConKey,
+       boxityConKey,
+       mVarPrimTyConKey,
        thenMClassOpKey,
+       threadIdPrimTyConKey,
        toEnumClassOpKey,
        traceIdKey,
        trueDataConKey,
+       unboundKey,
+       unboxedConKey,
        unpackCString2IdKey,
        unpackCStringAppendIdKey,
        unpackCStringFoldrIdKey,
        unpackCStringIdKey,
-       ureadListIdKey,
        unsafeCoerceIdKey,
        ushowListIdKey,
-       voidIdKey,
-       voidTyConKey,
+       weakPrimTyConKey,
        wordDataConKey,
        wordPrimTyConKey,
        wordTyConKey,
-       zeroClassOpKey
-       , copyableIdKey
-       , noFollowIdKey
-       , parAtAbsIdKey
-       , parAtForNowIdKey
-       , parAtIdKey
-       , parAtRelIdKey
-       , parGlobalIdKey
-       , parLocalIdKey
-       , unboundKey
-       , byteArrayTyConKey
-       , mutableByteArrayTyConKey
-       , allClassKey
+       word8TyConKey,
+       word8DataConKey,
+       word16TyConKey,
+       word16DataConKey,
+       word32TyConKey,
+       word32DataConKey,
+       word64DataConKey,
+       word64PrimTyConKey,
+       word64TyConKey,
+       zipIdKey
     ) where
 
 #include "HsVersions.h"
 
-import FastString      ( uniqueOfFS )
+import FastString      ( FastString, uniqueOfFS )
 import GlaExts
 import ST
 import PrelBase ( Char(..), chr, ord )
 
 import Outputable
-import Util
 \end{code}
 
 %************************************************************************
@@ -264,6 +236,8 @@ unpkUnique  :: Unique -> (Char, Int)        -- The reverse
 
 mkUniqueGrimily :: Int# -> Unique              -- A trap-door for UniqSupply
 
+getKey         :: Unique -> Int#               -- for Var
+
 incrUnique     :: Unique -> Unique
 \end{code}
 
@@ -271,6 +245,9 @@ incrUnique  :: Unique -> Unique
 \begin{code}
 mkUniqueGrimily x = MkUnique x
 
+{-# INLINE getKey #-}
+getKey (MkUnique x) = x
+
 incrUnique (MkUnique i) = MkUnique (i +# 1#)
 
 -- pop the Char in the top 8 bits of the Unique(Supply)
@@ -291,7 +268,7 @@ unpkUnique (MkUnique u)
     in
     (tag, i)
   where
-    shiftr x y = shiftRA# x y
+    shiftr x y = shiftRL# x y
 \end{code}
 
 
@@ -304,13 +281,13 @@ unpkUnique (MkUnique u)
 
 \begin{code}
 class Uniquable a where
-    uniqueOf :: a -> Unique
+    getUnique :: a -> Unique
 
 instance Uniquable FastString where
- uniqueOf fs = mkUniqueGrimily (uniqueOfFS fs)
+ getUnique fs = mkUniqueGrimily (uniqueOfFS fs)
 
 instance Uniquable Int where
- uniqueOf (I# i#) = mkUniqueGrimily i#
+ getUnique (I# i#) = mkUniqueGrimily i#
 \end{code}
 
 
@@ -345,7 +322,7 @@ instance Ord Unique where
 
 -----------------
 instance Uniquable Unique where
-    uniqueOf u = u
+    getUnique u = u
 \end{code}
 
 We do sometimes make strings with @Uniques@ in them:
@@ -366,14 +343,11 @@ finish_ppr 't' u pp_u | u < 26
     char (chr (ord 'a' + u))
 finish_ppr tag u pp_u = char tag <> pp_u
 
-showUnique :: Unique -> String
-showUnique uniq = showSDoc (pprUnique uniq)
-
 instance Outputable Unique where
     ppr u = pprUnique u
 
-instance Text Unique where
-    showsPrec p uniq rest = showUnique uniq
+instance Show Unique where
+    showsPrec p uniq = showsPrecSDoc p (pprUnique uniq)
 \end{code}
 
 %************************************************************************
@@ -437,20 +411,22 @@ Allocation of unique supply characters:
        B:   builtin
        C-E: pseudo uniques     (used in native-code generator)
        _:   unifiable tyvars   (above)
-       1-8: prelude things below
+       0-9: prelude things below
 
 \begin{code}
-mkAlphaTyVarUnique i           = mkUnique '1' i
+mkAlphaTyVarUnique i            = mkUnique '1' i
 
 mkPreludeClassUnique i         = mkUnique '2' i
 mkPreludeTyConUnique i         = mkUnique '3' i
 mkTupleTyConUnique a           = mkUnique '4' a
+mkUbxTupleTyConUnique a                = mkUnique '5' a
 
-mkPreludeDataConUnique i       = mkUnique '5' i        -- must be alphabetic
-mkTupleDataConUnique a         = mkUnique '6' a        -- ditto (*may* be used in C labels)
+mkPreludeDataConUnique i       = mkUnique '6' i -- must be alphabetic
+mkTupleDataConUnique a         = mkUnique '7' a -- ditto (*may* be used in C labels)
+mkUbxTupleDataConUnique a      = mkUnique '8' a
 
-mkPrimOpIdUnique op            = mkUnique '7' op
-mkPreludeMiscIdUnique i                = mkUnique '8' i
+mkPrimOpIdUnique op            = mkUnique '9' op
+mkPreludeMiscIdUnique i                = mkUnique '0' i
 
 -- The "tyvar uniques" print specially nicely: a, b, c, etc.
 -- See pprUnique for details
@@ -458,9 +434,6 @@ mkPreludeMiscIdUnique i             = mkUnique '8' i
 initTyVarUnique :: Unique
 initTyVarUnique = mkUnique 't' 0
 
-mkTyVarUnique :: Int -> Unique
-mkTyVarUnique n = mkUnique 't' n
-
 initTidyUniques :: (Unique, Unique)    -- Global and local
 initTidyUniques = (mkUnique 'g' 0, mkUnique 'x' 0)
 
@@ -468,7 +441,7 @@ mkPseudoUnique1, mkPseudoUnique2, mkPseudoUnique3,
  mkBuiltinUnique :: Int -> Unique
 
 mkBuiltinUnique i = mkUnique 'B' i
-mkPseudoUnique1 i = mkUnique 'C' i -- used for uniqueOf on Regs
+mkPseudoUnique1 i = mkUnique 'C' i -- used for getUnique on Regs
 mkPseudoUnique2 i = mkUnique 'D' i -- ditto
 mkPseudoUnique3 i = mkUnique 'E' i -- ditto
 
@@ -486,27 +459,24 @@ getBuiltinUniques n = map (mkUnique 'B') [1 .. n]
 boundedClassKey                = mkPreludeClassUnique 1 
 enumClassKey           = mkPreludeClassUnique 2 
 eqClassKey             = mkPreludeClassUnique 3 
-evalClassKey           = mkPreludeClassUnique 4 
 floatingClassKey       = mkPreludeClassUnique 5 
 fractionalClassKey     = mkPreludeClassUnique 6 
 integralClassKey       = mkPreludeClassUnique 7 
 monadClassKey          = mkPreludeClassUnique 8 
-monadZeroClassKey      = mkPreludeClassUnique 9 
-monadPlusClassKey      = mkPreludeClassUnique 10
-functorClassKey                = mkPreludeClassUnique 11
-numClassKey            = mkPreludeClassUnique 12
-ordClassKey            = mkPreludeClassUnique 13
-readClassKey           = mkPreludeClassUnique 14
-realClassKey           = mkPreludeClassUnique 15
-realFloatClassKey      = mkPreludeClassUnique 16
-realFracClassKey       = mkPreludeClassUnique 17
-showClassKey           = mkPreludeClassUnique 18
+monadPlusClassKey      = mkPreludeClassUnique 9
+functorClassKey                = mkPreludeClassUnique 10
+numClassKey            = mkPreludeClassUnique 11
+ordClassKey            = mkPreludeClassUnique 12
+readClassKey           = mkPreludeClassUnique 13
+realClassKey           = mkPreludeClassUnique 14
+realFloatClassKey      = mkPreludeClassUnique 15
+realFracClassKey       = mkPreludeClassUnique 16
+showClassKey           = mkPreludeClassUnique 17
                                               
-cCallableClassKey      = mkPreludeClassUnique 19
-cReturnableClassKey    = mkPreludeClassUnique 20
+cCallableClassKey      = mkPreludeClassUnique 18
+cReturnableClassKey    = mkPreludeClassUnique 19
 
-ixClassKey             = mkPreludeClassUnique 21
-allClassKey            = mkPreludeClassUnique 22       -- Pseudo class used for universal quantification
+ixClassKey             = mkPreludeClassUnique 20
 \end{code}
 
 %************************************************************************
@@ -530,47 +500,46 @@ floatTyConKey                             = mkPreludeTyConUnique 12
 funTyConKey                            = mkPreludeTyConUnique 13
 intPrimTyConKey                                = mkPreludeTyConUnique 14
 intTyConKey                            = mkPreludeTyConUnique 15
-integerTyConKey                                = mkPreludeTyConUnique 16
-liftTyConKey                           = mkPreludeTyConUnique 17
-listTyConKey                           = mkPreludeTyConUnique 18
-foreignObjPrimTyConKey                 = mkPreludeTyConUnique 19
-foreignObjTyConKey                     = mkPreludeTyConUnique 20
-mutableArrayPrimTyConKey               = mkPreludeTyConUnique 21
-mutableByteArrayPrimTyConKey           = mkPreludeTyConUnique 22
-orderingTyConKey                       = mkPreludeTyConUnique 23
-synchVarPrimTyConKey                   = mkPreludeTyConUnique 24
-ratioTyConKey                          = mkPreludeTyConUnique 25
-rationalTyConKey                       = mkPreludeTyConUnique 26
-realWorldTyConKey                      = mkPreludeTyConUnique 27
-return2GMPsTyConKey                    = mkPreludeTyConUnique 28
-returnIntAndGMPTyConKey                        = mkPreludeTyConUnique 29
-stablePtrPrimTyConKey                  = mkPreludeTyConUnique 30
-stablePtrTyConKey                      = mkPreludeTyConUnique 31
-stateAndAddrPrimTyConKey               = mkPreludeTyConUnique 32
-stateAndArrayPrimTyConKey              = mkPreludeTyConUnique 33
-stateAndByteArrayPrimTyConKey          = mkPreludeTyConUnique 34
-stateAndCharPrimTyConKey               = mkPreludeTyConUnique 35
-stateAndDoublePrimTyConKey             = mkPreludeTyConUnique 36
-stateAndFloatPrimTyConKey              = mkPreludeTyConUnique 37
-stateAndIntPrimTyConKey                        = mkPreludeTyConUnique 38
-stateAndForeignObjPrimTyConKey         = mkPreludeTyConUnique 39
-stateAndMutableArrayPrimTyConKey       = mkPreludeTyConUnique 40
-stateAndMutableByteArrayPrimTyConKey   = mkPreludeTyConUnique 41
-stateAndSynchVarPrimTyConKey           = mkPreludeTyConUnique 42
-stateAndPtrPrimTyConKey                        = mkPreludeTyConUnique 43
-stateAndStablePtrPrimTyConKey          = mkPreludeTyConUnique 44
-stateAndWordPrimTyConKey               = mkPreludeTyConUnique 45
-statePrimTyConKey                      = mkPreludeTyConUnique 46
-stateTyConKey                          = mkPreludeTyConUnique 47
-mutableByteArrayTyConKey               = mkPreludeTyConUnique 48
-stTyConKey                             = mkPreludeTyConUnique 49
-stRetTyConKey                          = mkPreludeTyConUnique 50
-ioTyConKey                             = mkPreludeTyConUnique 51
-ioResultTyConKey                       = mkPreludeTyConUnique 52
-byteArrayTyConKey                      = mkPreludeTyConUnique 53
-wordPrimTyConKey                       = mkPreludeTyConUnique 54
-wordTyConKey                           = mkPreludeTyConUnique 55
-voidTyConKey                           = mkPreludeTyConUnique 56
+int8TyConKey                           = mkPreludeTyConUnique 16
+int16TyConKey                          = mkPreludeTyConUnique 17
+int32TyConKey                          = mkPreludeTyConUnique 18
+int64PrimTyConKey                      = mkPreludeTyConUnique 19
+int64TyConKey                          = mkPreludeTyConUnique 20
+integerTyConKey                                = mkPreludeTyConUnique 21
+listTyConKey                           = mkPreludeTyConUnique 22
+foreignObjPrimTyConKey                 = mkPreludeTyConUnique 23
+foreignObjTyConKey                     = mkPreludeTyConUnique 24
+weakPrimTyConKey                       = mkPreludeTyConUnique 25
+mutableArrayPrimTyConKey               = mkPreludeTyConUnique 26
+mutableByteArrayPrimTyConKey           = mkPreludeTyConUnique 27
+orderingTyConKey                       = mkPreludeTyConUnique 28
+mVarPrimTyConKey                       = mkPreludeTyConUnique 29
+ratioTyConKey                          = mkPreludeTyConUnique 30
+rationalTyConKey                       = mkPreludeTyConUnique 31
+realWorldTyConKey                      = mkPreludeTyConUnique 32
+stablePtrPrimTyConKey                  = mkPreludeTyConUnique 33
+stablePtrTyConKey                      = mkPreludeTyConUnique 34
+statePrimTyConKey                      = mkPreludeTyConUnique 35
+stableNamePrimTyConKey                 = mkPreludeTyConUnique 50
+stableNameTyConKey                     = mkPreludeTyConUnique 51
+mutableByteArrayTyConKey               = mkPreludeTyConUnique 52
+mutVarPrimTyConKey                     = mkPreludeTyConUnique 53
+ioTyConKey                             = mkPreludeTyConUnique 55
+byteArrayTyConKey                      = mkPreludeTyConUnique 56
+wordPrimTyConKey                       = mkPreludeTyConUnique 57
+wordTyConKey                           = mkPreludeTyConUnique 58
+word8TyConKey                          = mkPreludeTyConUnique 59
+word16TyConKey                         = mkPreludeTyConUnique 60
+word32TyConKey                         = mkPreludeTyConUnique 61
+word64PrimTyConKey                     = mkPreludeTyConUnique 62
+word64TyConKey                         = mkPreludeTyConUnique 63
+boxedConKey                            = mkPreludeTyConUnique 64
+unboxedConKey                          = mkPreludeTyConUnique 65
+anyBoxConKey                           = mkPreludeTyConUnique 66
+kindConKey                             = mkPreludeTyConUnique 67
+boxityConKey                           = mkPreludeTyConUnique 68
+typeConKey                             = mkPreludeTyConUnique 69
+threadIdPrimTyConKey                   = mkPreludeTyConUnique 70
 \end{code}
 
 %************************************************************************
@@ -581,46 +550,31 @@ voidTyConKey                              = mkPreludeTyConUnique 56
 
 \begin{code}
 addrDataConKey                         = mkPreludeDataConUnique  1
-buildDataConKey                                = mkPreludeDataConUnique  2
-charDataConKey                         = mkPreludeDataConUnique  4
-consDataConKey                         = mkPreludeDataConUnique  5
-doubleDataConKey                       = mkPreludeDataConUnique  6
-eqDataConKey                           = mkPreludeDataConUnique  7
-falseDataConKey                                = mkPreludeDataConUnique  8
-floatDataConKey                                = mkPreludeDataConUnique  9
-gtDataConKey                           = mkPreludeDataConUnique 10
-intDataConKey                          = mkPreludeDataConUnique 11
-integerDataConKey                      = mkPreludeDataConUnique 12
-liftDataConKey                         = mkPreludeDataConUnique 13
-ltDataConKey                           = mkPreludeDataConUnique 14
-foreignObjDataConKey                   = mkPreludeDataConUnique 15
-nilDataConKey                          = mkPreludeDataConUnique 18
-ratioDataConKey                                = mkPreludeDataConUnique 21
-return2GMPsDataConKey                  = mkPreludeDataConUnique 22
-returnIntAndGMPDataConKey              = mkPreludeDataConUnique 23
-stablePtrDataConKey                    = mkPreludeDataConUnique 24
-stateAndAddrPrimDataConKey             = mkPreludeDataConUnique 25
-stateAndArrayPrimDataConKey            = mkPreludeDataConUnique 26
-stateAndByteArrayPrimDataConKey                = mkPreludeDataConUnique 27
-stateAndCharPrimDataConKey             = mkPreludeDataConUnique 28
-stateAndDoublePrimDataConKey           = mkPreludeDataConUnique 29
-stateAndFloatPrimDataConKey            = mkPreludeDataConUnique 30
-stateAndIntPrimDataConKey              = mkPreludeDataConUnique 31
-stateAndForeignObjPrimDataConKey       = mkPreludeDataConUnique 32
-stateAndMutableArrayPrimDataConKey     = mkPreludeDataConUnique 33
-stateAndMutableByteArrayPrimDataConKey = mkPreludeDataConUnique 34
-stateAndSynchVarPrimDataConKey         = mkPreludeDataConUnique 35
-stateAndPtrPrimDataConKey              = mkPreludeDataConUnique 36
-stateAndStablePtrPrimDataConKey                = mkPreludeDataConUnique 37
-stateAndWordPrimDataConKey             = mkPreludeDataConUnique 38
-stateDataConKey                                = mkPreludeDataConUnique 39
-trueDataConKey                         = mkPreludeDataConUnique 40
-wordDataConKey                         = mkPreludeDataConUnique 41
-stDataConKey                           = mkPreludeDataConUnique 42
-stRetDataConKey                                = mkPreludeDataConUnique 43
-ioDataConKey                           = mkPreludeDataConUnique 44
-ioOkDataConKey                         = mkPreludeDataConUnique 45
-ioFailDataConKey                       = mkPreludeDataConUnique 46
+charDataConKey                         = mkPreludeDataConUnique  2
+consDataConKey                         = mkPreludeDataConUnique  3
+doubleDataConKey                       = mkPreludeDataConUnique  4
+falseDataConKey                                = mkPreludeDataConUnique  5
+floatDataConKey                                = mkPreludeDataConUnique  6
+intDataConKey                          = mkPreludeDataConUnique  7
+int8DataConKey                         = mkPreludeDataConUnique  8
+int16DataConKey                                = mkPreludeDataConUnique  9
+int32DataConKey                                = mkPreludeDataConUnique 10
+int64DataConKey                                = mkPreludeDataConUnique 11
+smallIntegerDataConKey                 = mkPreludeDataConUnique 12
+largeIntegerDataConKey                 = mkPreludeDataConUnique 13
+foreignObjDataConKey                   = mkPreludeDataConUnique 14
+nilDataConKey                          = mkPreludeDataConUnique 15
+ratioDataConKey                                = mkPreludeDataConUnique 16
+stablePtrDataConKey                    = mkPreludeDataConUnique 17
+stableNameDataConKey                   = mkPreludeDataConUnique 18
+trueDataConKey                         = mkPreludeDataConUnique 34
+wordDataConKey                         = mkPreludeDataConUnique 35
+word8DataConKey                                = mkPreludeDataConUnique 36
+word16DataConKey                       = mkPreludeDataConUnique 37
+word32DataConKey                       = mkPreludeDataConUnique 38
+word64DataConKey                       = mkPreludeDataConUnique 39
+stDataConKey                           = mkPreludeDataConUnique 40
+ioDataConKey                           = mkPreludeDataConUnique 42
 \end{code}
 
 %************************************************************************
@@ -631,85 +585,73 @@ ioFailDataConKey                  = mkPreludeDataConUnique 46
 
 \begin{code}
 absentErrorIdKey             = mkPreludeMiscIdUnique  1
-andandIdKey                  = mkPreludeMiscIdUnique  2
-appendIdKey                  = mkPreludeMiscIdUnique  3
-augmentIdKey                 = mkPreludeMiscIdUnique  4
-buildIdKey                   = mkPreludeMiscIdUnique  5
-composeIdKey                 = mkPreludeMiscIdUnique  6
-errorIdKey                   = mkPreludeMiscIdUnique  7
-foldlIdKey                   = mkPreludeMiscIdUnique  8
-foldrIdKey                   = mkPreludeMiscIdUnique  9
-forkIdKey                    = mkPreludeMiscIdUnique 10
-recSelErrIdKey               = mkPreludeMiscIdUnique 11
-integerMinusOneIdKey         = mkPreludeMiscIdUnique 12
-integerPlusOneIdKey          = mkPreludeMiscIdUnique 13
-integerPlusTwoIdKey          = mkPreludeMiscIdUnique 14
-integerZeroIdKey             = mkPreludeMiscIdUnique 15
-irrefutPatErrorIdKey         = mkPreludeMiscIdUnique 16
-lexIdKey                     = mkPreludeMiscIdUnique 17
-noMethodBindingErrorIdKey     = mkPreludeMiscIdUnique 20
-nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 21
-notIdKey                     = mkPreludeMiscIdUnique 22
-packCStringIdKey             = mkPreludeMiscIdUnique 23
-parErrorIdKey                = mkPreludeMiscIdUnique 24
-parIdKey                     = mkPreludeMiscIdUnique 25
-patErrorIdKey                = mkPreludeMiscIdUnique 26
-readParenIdKey               = mkPreludeMiscIdUnique 27
-realWorldPrimIdKey           = mkPreludeMiscIdUnique 28
-recConErrorIdKey             = mkPreludeMiscIdUnique 29
-recUpdErrorIdKey             = mkPreludeMiscIdUnique 30
-seqIdKey                     = mkPreludeMiscIdUnique 31
-showParenIdKey               = mkPreludeMiscIdUnique 32
-showSpaceIdKey               = mkPreludeMiscIdUnique 33
-showStringIdKey                      = mkPreludeMiscIdUnique 34
-traceIdKey                   = mkPreludeMiscIdUnique 35
-unpackCString2IdKey          = mkPreludeMiscIdUnique 36
-unpackCStringAppendIdKey      = mkPreludeMiscIdUnique 37
-unpackCStringFoldrIdKey              = mkPreludeMiscIdUnique 38
-unpackCStringIdKey           = mkPreludeMiscIdUnique 39
-unsafeCoerceIdKey            = mkPreludeMiscIdUnique 40
-voidIdKey                    = mkPreludeMiscIdUnique 41
-ushowListIdKey               = mkPreludeMiscIdUnique 42
-ureadListIdKey               = mkPreludeMiscIdUnique 43
-
-copyableIdKey          = mkPreludeMiscIdUnique 44
-noFollowIdKey          = mkPreludeMiscIdUnique 45
-parAtAbsIdKey          = mkPreludeMiscIdUnique 46
-parAtForNowIdKey       = mkPreludeMiscIdUnique 47
-parAtIdKey             = mkPreludeMiscIdUnique 48
-parAtRelIdKey          = mkPreludeMiscIdUnique 49
-parGlobalIdKey         = mkPreludeMiscIdUnique 50
-parLocalIdKey          = mkPreludeMiscIdUnique 51
+appendIdKey                  = mkPreludeMiscIdUnique  2
+augmentIdKey                 = mkPreludeMiscIdUnique  3
+buildIdKey                   = mkPreludeMiscIdUnique  4
+errorIdKey                   = mkPreludeMiscIdUnique  5
+foldlIdKey                   = mkPreludeMiscIdUnique  6
+foldrIdKey                   = mkPreludeMiscIdUnique  7
+recSelErrIdKey               = mkPreludeMiscIdUnique  8
+integerMinusOneIdKey         = mkPreludeMiscIdUnique  9
+integerPlusOneIdKey          = mkPreludeMiscIdUnique 10
+integerPlusTwoIdKey          = mkPreludeMiscIdUnique 11
+integerZeroIdKey             = mkPreludeMiscIdUnique 12
+int2IntegerIdKey             = mkPreludeMiscIdUnique 13
+addr2IntegerIdKey            = mkPreludeMiscIdUnique 14
+irrefutPatErrorIdKey         = mkPreludeMiscIdUnique 15
+lexIdKey                     = mkPreludeMiscIdUnique 16
+noMethodBindingErrorIdKey     = mkPreludeMiscIdUnique 17
+nonExhaustiveGuardsErrorIdKey = mkPreludeMiscIdUnique 18
+packCStringIdKey             = mkPreludeMiscIdUnique 19
+parErrorIdKey                = mkPreludeMiscIdUnique 20
+parIdKey                     = mkPreludeMiscIdUnique 21
+patErrorIdKey                = mkPreludeMiscIdUnique 22
+realWorldPrimIdKey           = mkPreludeMiscIdUnique 23
+recConErrorIdKey             = mkPreludeMiscIdUnique 24
+recUpdErrorIdKey             = mkPreludeMiscIdUnique 25
+traceIdKey                   = mkPreludeMiscIdUnique 26
+unpackCString2IdKey          = mkPreludeMiscIdUnique 27
+unpackCStringAppendIdKey      = mkPreludeMiscIdUnique 28
+unpackCStringFoldrIdKey              = mkPreludeMiscIdUnique 29
+unpackCStringIdKey           = mkPreludeMiscIdUnique 30
+ushowListIdKey               = mkPreludeMiscIdUnique 31
+unsafeCoerceIdKey            = mkPreludeMiscIdUnique 32
+concatIdKey                  = mkPreludeMiscIdUnique 33
+filterIdKey                  = mkPreludeMiscIdUnique 34
+zipIdKey                     = mkPreludeMiscIdUnique 35
+bindIOIdKey                  = mkPreludeMiscIdUnique 36
+deRefStablePtrIdKey          = mkPreludeMiscIdUnique 37
+makeStablePtrIdKey           = mkPreludeMiscIdUnique 38
 \end{code}
 
-Certain class operations from Prelude classes.  They get
-their own uniques so we can look them up easily when we want
-to conjure them up during type checking.        
+Certain class operations from Prelude classes.  They get their own
+uniques so we can look them up easily when we want to conjure them up
+during type checking.
+
 \begin{code}                                     
-fromIntClassOpKey      = mkPreludeMiscIdUnique 52
-fromIntegerClassOpKey  = mkPreludeMiscIdUnique 53
-minusClassOpKey                = mkPreludeMiscIdUnique 54
-fromRationalClassOpKey = mkPreludeMiscIdUnique 55
-enumFromClassOpKey     = mkPreludeMiscIdUnique 56
-enumFromThenClassOpKey = mkPreludeMiscIdUnique 57
-enumFromToClassOpKey   = mkPreludeMiscIdUnique 58
-enumFromThenToClassOpKey= mkPreludeMiscIdUnique 59
-eqClassOpKey           = mkPreludeMiscIdUnique 50
-geClassOpKey           = mkPreludeMiscIdUnique 61
-zeroClassOpKey         = mkPreludeMiscIdUnique 62
-thenMClassOpKey                = mkPreludeMiscIdUnique 63 -- (>>=)
-unboundKey             = mkPreludeMiscIdUnique 64      -- Just a place holder for unbound
-                                                       -- variables produced by the renamer
-fromEnumClassOpKey     = mkPreludeMiscIdUnique 65
-
-mainKey                        = mkPreludeMiscIdUnique 66
-returnMClassOpKey      = mkPreludeMiscIdUnique 67
-otherwiseIdKey         = mkPreludeMiscIdUnique 68
-toEnumClassOpKey       = mkPreludeMiscIdUnique 69
+fromIntClassOpKey            = mkPreludeMiscIdUnique 101
+fromIntegerClassOpKey        = mkPreludeMiscIdUnique 102
+minusClassOpKey                      = mkPreludeMiscIdUnique 103
+fromRationalClassOpKey       = mkPreludeMiscIdUnique 104
+enumFromClassOpKey           = mkPreludeMiscIdUnique 105
+enumFromThenClassOpKey       = mkPreludeMiscIdUnique 106
+enumFromToClassOpKey         = mkPreludeMiscIdUnique 107
+enumFromThenToClassOpKey      = mkPreludeMiscIdUnique 108
+eqClassOpKey                 = mkPreludeMiscIdUnique 109
+geClassOpKey                 = mkPreludeMiscIdUnique 110
+failMClassOpKey                      = mkPreludeMiscIdUnique 112
+thenMClassOpKey                      = mkPreludeMiscIdUnique 113 -- (>>=)
+       -- Just a place holder for  unbound variables  produced by the renamer:
+unboundKey                   = mkPreludeMiscIdUnique 114 
+fromEnumClassOpKey           = mkPreludeMiscIdUnique 115
+                             
+mainKey                              = mkPreludeMiscIdUnique 116
+returnMClassOpKey            = mkPreludeMiscIdUnique 117
+otherwiseIdKey               = mkPreludeMiscIdUnique 118
+toEnumClassOpKey             = mkPreludeMiscIdUnique 119
+mapIdKey                     = mkPreludeMiscIdUnique 120
 \end{code}
 
 \begin{code}
-inlineIdKey            = mkPreludeMiscIdUnique 70
-coerceIdKey            = mkPreludeMiscIdUnique 71
-assertIdKey            = mkPreludeMiscIdUnique 72
+assertIdKey                  = mkPreludeMiscIdUnique 121
 \end{code}