X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FbasicTypes%2FUniqSupply.lhs;h=8dcf595da004124b75fbee654b2b0da9c2aede9a;hb=8a2809c29de9f23eba7ca682b48390033a9d40f6;hp=710fc034a60196271131641fd47fc7e4fb1b6164;hpb=150cc9e2e4657cc58bd7ec4c15e5cb72f2e1c0f6;p=ghc-hetmet.git diff --git a/compiler/basicTypes/UniqSupply.lhs b/compiler/basicTypes/UniqSupply.lhs index 710fc03..8dcf595 100644 --- a/compiler/basicTypes/UniqSupply.lhs +++ b/compiler/basicTypes/UniqSupply.lhs @@ -18,7 +18,7 @@ module UniqSupply ( lazyThenUs, lazyMapUs, mkSplitUniqSupply, - splitUniqSupply + splitUniqSupply, listSplitUniqSupply ) where #include "HsVersions.h" @@ -56,6 +56,7 @@ data UniqSupply mkSplitUniqSupply :: Char -> IO UniqSupply splitUniqSupply :: UniqSupply -> (UniqSupply, UniqSupply) +listSplitUniqSupply :: UniqSupply -> [UniqSupply] -- Infinite uniqFromSupply :: UniqSupply -> Unique uniqsFromSupply :: UniqSupply -> [Unique] -- Infinite \end{code} @@ -63,11 +64,7 @@ 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 @@ -84,6 +81,7 @@ mkSplitUniqSupply (C# c#) foreign import ccall unsafe "genSymZh" genSymZh :: IO Int splitUniqSupply (MkSplitUniqSupply _ s1 s2) = (s1, s2) +listSplitUniqSupply (MkSplitUniqSupply _ s1 s2) = s1 : listSplitUniqSupply s2 \end{code} \begin{code}