Switch more uniqFromSupply+splitUniqSupply's to takeUniqFromSupply
[ghc-hetmet.git] / compiler / iface / BinIface.hs
index 2931ffa..f7a9aa2 100644 (file)
@@ -23,7 +23,6 @@ import IfaceSyn
 import Module
 import Name
 import VarEnv
-import Class
 import DynFlags
 import UniqFM
 import UniqSupply
@@ -257,22 +256,20 @@ fromOnDiskName
    -> OnDiskName
    -> (NameCache, Name)
 fromOnDiskName _ nc (pid, mod_name, occ) =
-  let 
+  let
         mod   = mkModule pid mod_name
         cache = nsNames nc
   in
   case lookupOrigNameCache cache  mod occ of
      Just name -> (nc, name)
-     Nothing   -> 
-        let 
-                us        = nsUniqs nc
-                uniq      = uniqFromSupply us
+     Nothing   ->
+        case takeUniqFromSupply (nsUniqs nc) of
+        (uniq, us) ->
+            let
                 name      = mkExternalName uniq mod occ noSrcSpan
                 new_cache = extendNameCache cache mod occ name
-        in        
-        case splitUniqSupply us of { (us',_) -> 
-        ( nc{ nsUniqs = us', nsNames = new_cache }, name )
-        }
+            in
+            ( nc{ nsUniqs = us, nsNames = new_cache }, name )
 
 serialiseName :: BinHandle -> Name -> UniqFM (Int,Name) -> IO ()
 serialiseName bh name _ = do
@@ -613,16 +610,31 @@ instance Binary InlinePragma where
            d <- get bh
            return (InlinePragma a b c d)
 
-instance Binary StrictnessMark where
-    put_ bh MarkedStrict    = putByte bh 0
-    put_ bh MarkedUnboxed   = putByte bh 1
-    put_ bh NotMarkedStrict = putByte bh 2
+instance Binary InlineSpec where
+    put_ bh EmptyInlineSpec = putByte bh 0
+    put_ bh Inline          = putByte bh 1
+    put_ bh Inlinable       = putByte bh 2
+    put_ bh NoInline        = putByte bh 3
+
+    get bh = do h <- getByte bh
+                case h of
+                  0 -> return EmptyInlineSpec
+                  1 -> return Inline
+                  2 -> return Inlinable
+                  _ -> return NoInline
+
+instance Binary HsBang where
+    put_ bh HsNoBang        = putByte bh 0
+    put_ bh HsStrict        = putByte bh 1
+    put_ bh HsUnpack        = putByte bh 2
+    put_ bh HsUnpackFailed  = putByte bh 3
     get bh = do
            h <- getByte bh
            case h of
-             0 -> do return MarkedStrict
-             1 -> do return MarkedUnboxed
-             _ -> do return NotMarkedStrict
+             0 -> do return HsNoBang
+             1 -> do return HsStrict
+             2 -> do return HsUnpack
+             _ -> do return HsUnpackFailed
 
 instance Binary Boxity where
     put_ bh Boxed   = putByte bh 0
@@ -653,16 +665,16 @@ instance Binary RecFlag where
              0 -> do return Recursive
              _ -> do return NonRecursive
 
-instance Binary DefMeth where
-    put_ bh NoDefMeth  = putByte bh 0
-    put_ bh DefMeth    = putByte bh 1
-    put_ bh GenDefMeth = putByte bh 2
+instance Binary DefMethSpec where
+    put_ bh NoDM      = putByte bh 0
+    put_ bh VanillaDM = putByte bh 1
+    put_ bh GenericDM = putByte bh 2
     get bh = do
            h <- getByte bh
            case h of
-             0 -> return NoDefMeth
-             1 -> return DefMeth
-             _ -> return GenDefMeth
+             0 -> return NoDM
+             1 -> return VanillaDM
+             _ -> return GenericDM
 
 instance Binary FixityDirection where
     put_ bh InfixL = do
@@ -1187,8 +1199,9 @@ instance Binary IfaceInfoItem where
              _ -> do return HsNoCafRefs
 
 instance Binary IfaceUnfolding where
-    put_ bh (IfCoreUnfold e) = do
+    put_ bh (IfCoreUnfold s e) = do
        putByte bh 0
+       put_ bh s
        put_ bh e
     put_ bh (IfInlineRule a b c d) = do
        putByte bh 1
@@ -1209,8 +1222,9 @@ instance Binary IfaceUnfolding where
     get bh = do
        h <- getByte bh
        case h of
-         0 -> do e <- get bh
-                 return (IfCoreUnfold e)
+         0 -> do s <- get bh
+                 e <- get bh
+                 return (IfCoreUnfold s e)
          1 -> do a <- get bh
                  b <- get bh
                  c <- get bh
@@ -1414,7 +1428,7 @@ instance Binary IfaceClassOp where
        return (IfaceClassOp occ def ty)
 
 instance Binary IfaceRule where
-    put_ bh (IfaceRule a1 a2 a3 a4 a5 a6 a7) = do
+    put_ bh (IfaceRule a1 a2 a3 a4 a5 a6 a7 a8) = do
            put_ bh a1
            put_ bh a2
            put_ bh a3
@@ -1422,6 +1436,7 @@ instance Binary IfaceRule where
            put_ bh a5
            put_ bh a6
            put_ bh a7
+           put_ bh a8
     get bh = do
            a1 <- get bh
            a2 <- get bh
@@ -1430,7 +1445,8 @@ instance Binary IfaceRule where
            a5 <- get bh
            a6 <- get bh
            a7 <- get bh
-           return (IfaceRule a1 a2 a3 a4 a5 a6 a7)
+           a8 <- get bh
+           return (IfaceRule a1 a2 a3 a4 a5 a6 a7 a8)
 
 instance Binary IfaceAnnotation where
     put_ bh (IfaceAnnotation a1 a2) = do