X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fiface%2FBinIface.hs;h=4d3f619b4f0287b91b9141504dc390ec469c92e3;hb=5e4375adca19f66803c3ad47fb1ba2c2ac6b4b62;hp=ce023d729e458618138a96416f7b3b710ba83089;hpb=6a944ae7fe1e8e2e456c68717188463263f8978f;p=ghc-hetmet.git diff --git a/compiler/iface/BinIface.hs b/compiler/iface/BinIface.hs index ce023d7..4d3f619 100644 --- a/compiler/iface/BinIface.hs +++ b/compiler/iface/BinIface.hs @@ -17,13 +17,12 @@ import TcRnMonad import IfaceEnv import HscTypes import BasicTypes -import NewDemand +import Demand import Annotations import IfaceSyn import Module import Name import VarEnv -import Class import DynFlags import UniqFM import UniqSupply @@ -335,7 +334,7 @@ data BinDictionary = BinDictionary { {-! for StrictnessMark derive: Binary !-} {-! for Activation derive: Binary !-} --- NewDemand +-- Demand {-! for Demand derive: Binary !-} {-! for Demands derive: Binary !-} {-! for DmdResult derive: Binary !-} @@ -600,27 +599,31 @@ instance Binary RuleMatchInfo where else return FunLike instance Binary InlinePragma where - put_ bh (InlinePragma a b c) = do + put_ bh (InlinePragma a b c d) = do put_ bh a put_ bh b put_ bh c + put_ bh d get bh = do a <- get bh b <- get bh c <- get bh - return (InlinePragma a b c) - -instance Binary StrictnessMark where - put_ bh MarkedStrict = putByte bh 0 - put_ bh MarkedUnboxed = putByte bh 1 - put_ bh NotMarkedStrict = putByte bh 2 + d <- get bh + return (InlinePragma a b c d) + +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 @@ -651,16 +654,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 @@ -1188,11 +1191,12 @@ instance Binary IfaceUnfolding where put_ bh (IfCoreUnfold e) = do putByte bh 0 put_ bh e - put_ bh (IfInlineRule a b e) = do + put_ bh (IfInlineRule a b c d) = do putByte bh 1 put_ bh a put_ bh b - put_ bh e + put_ bh c + put_ bh d put_ bh (IfWrapper a n) = do putByte bh 2 put_ bh a @@ -1200,6 +1204,9 @@ instance Binary IfaceUnfolding where put_ bh (IfDFunUnfold as) = do putByte bh 3 put_ bh as + put_ bh (IfCompulsory e) = do + putByte bh 4 + put_ bh e get bh = do h <- getByte bh case h of @@ -1207,13 +1214,16 @@ instance Binary IfaceUnfolding where return (IfCoreUnfold e) 1 -> do a <- get bh b <- get bh - e <- get bh - return (IfInlineRule a b e) + c <- get bh + d <- get bh + return (IfInlineRule a b c d) 2 -> do a <- get bh n <- get bh return (IfWrapper a n) - _ -> do as <- get bh + 3 -> do as <- get bh return (IfDFunUnfold as) + _ -> do e <- get bh + return (IfCompulsory e) instance Binary IfaceNote where put_ bh (IfaceSCC aa) = do