X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fiface%2FBinIface.hs;h=211e8a7cf4e5b52e96d60d10ea8a12d189f8b980;hb=c502aec4eec2b506fcc9ca26d0c5b830eb0ab15a;hp=2931ffa70a3d294f131444c6e55f816a90182ae5;hpb=77166b1729061531eeb77c33f4d3b2581f7d4c41;p=ghc-hetmet.git diff --git a/compiler/iface/BinIface.hs b/compiler/iface/BinIface.hs index 2931ffa..211e8a7 100644 --- a/compiler/iface/BinIface.hs +++ b/compiler/iface/BinIface.hs @@ -23,7 +23,6 @@ import IfaceSyn import Module import Name import VarEnv -import Class import DynFlags import UniqFM import UniqSupply @@ -257,20 +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 + Nothing -> + let us = nsUniqs nc uniq = uniqFromSupply us name = mkExternalName uniq mod occ noSrcSpan new_cache = extendNameCache cache mod occ name - in - case splitUniqSupply us of { (us',_) -> + in + case splitUniqSupply us of { (us',_) -> ( nc{ nsUniqs = us', nsNames = new_cache }, name ) } @@ -613,16 +612,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 +667,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 +1201,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 +1224,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 +1430,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 +1438,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 +1447,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