X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FbasicTypes%2FUniqSupply.lhs;h=86cf320bf8516007a6c8130a8524b03270e92f4e;hb=b7cc3d012a98cc49abb3441e6637d5148f57f1d1;hp=218df9ee9034801e89d6b562b98978f6fa75ae07;hpb=b4775e5e760111e2d71fba3c44882dce390edfb2;p=ghc-hetmet.git diff --git a/ghc/compiler/basicTypes/UniqSupply.lhs b/ghc/compiler/basicTypes/UniqSupply.lhs index 218df9e..86cf320 100644 --- a/ghc/compiler/basicTypes/UniqSupply.lhs +++ b/ghc/compiler/basicTypes/UniqSupply.lhs @@ -24,12 +24,9 @@ module UniqSupply ( #include "HsVersions.h" import Unique -import GlaExts -#if __GLASGOW_HASKELL__ < 301 -import IOBase ( IO(..), IOResult(..) ) -#else -#endif +import GLAEXTS +import UNSAFE_IO ( unsafeInterleaveIO ) w2i x = word2Int# x i2w x = int2Word# x @@ -43,12 +40,6 @@ i2w_s x = (x :: Int#) %* * %************************************************************************ -%************************************************************************ -%* * -\subsubsection[UniqSupply-type]{@UniqSupply@ type and operations} -%* * -%************************************************************************ - A value of type @UniqSupply@ is unique, and it can supply {\em one} distinct @Unique@. Also, from the supply, one can also manufacture an arbitrary number of further @UniqueSupplies@, @@ -72,8 +63,11 @@ uniqsFromSupply :: UniqSupply -> [Unique] -- Infinite \begin{code} mkSplitUniqSupply (C# c#) = let +#if __GLASGOW_HASKELL__ >= 503 + mask# = (i2w (ord# c#)) `uncheckedShiftL#` (i2w_s 24#) +#else mask# = (i2w (ord# c#)) `shiftL#` (i2w_s 24#) - +#endif -- here comes THE MAGIC: -- This is one of the most hammered bits in the whole compiler