X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FbasicTypes%2FUniqSupply.lhs;h=424dbe25423fa07514e6eac6602899315281e24c;hb=9c54ee0c9e25617b2a9ad4cdd9d3a6354e2edc0f;hp=7937043dd6d1b9ee0ccf6f1cd6ab592162fe9c28;hpb=49c98d143c382a1341e1046f5ca00819a25691ba;p=ghc-hetmet.git diff --git a/compiler/basicTypes/UniqSupply.lhs b/compiler/basicTypes/UniqSupply.lhs index 7937043..424dbe2 100644 --- a/compiler/basicTypes/UniqSupply.lhs +++ b/compiler/basicTypes/UniqSupply.lhs @@ -63,25 +63,21 @@ 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 mk_supply# = unsafeInterleaveIO ( - genSymZh >>= \ (W# u#) -> + genSymZh >>= \ (I# u#) -> mk_supply# >>= \ s1 -> mk_supply# >>= \ s2 -> - return (MkSplitUniqSupply (w2i (mask# `or#` u#)) s1 s2) + return (MkSplitUniqSupply (w2i (mask# `or#` (i2w u#))) s1 s2) ) in mk_supply# -foreign import ccall unsafe "genSymZh" genSymZh :: IO Word +foreign import ccall unsafe "genSymZh" genSymZh :: IO Int splitUniqSupply (MkSplitUniqSupply _ s1 s2) = (s1, s2) \end{code}