[project @ 1998-02-25 14:35:37 by simonm]
authorsimonm <unknown>
Wed, 25 Feb 1998 14:35:37 +0000 (14:35 +0000)
committersimonm <unknown>
Wed, 25 Feb 1998 14:35:37 +0000 (14:35 +0000)
Don't use lazy unboxed bindings in strictToLazyST.  Write out what we
want explicity using case expressions.

ghc/lib/exts/LazyST.lhs

index 51fb06a..1d9cf60 100644 (file)
@@ -106,10 +106,11 @@ unsafeFreezeSTArray (STArray arr) = strictToLazyST (unsafeFreezeArray arr)
 strictToLazyST :: PrelST.ST s a -> ST s a
 strictToLazyST (PrelST.ST m) = ST $ \s ->
         let 
-           PrelST.S# s# = s
-           PrelST.STret s2# r = m s# 
+          pr = case s of { PrelST.S# s# -> m s# }
+          r  = case pr of { PrelST.STret s2# r -> r }
+          s' = case pr of { PrelST.STret s2# r -> PrelST.S# s2# }
        in
-       (r, PrelST.S# s2#)
+       (r, s')
 
 lazyToStrictST :: ST s a -> PrelST.ST s a
 lazyToStrictST (ST m) = PrelST.ST $ \s ->