X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fiface%2FBinIface.hs;h=b1c97cdf00e8375792d4a41ec264caf668a3c2e9;hb=edc0bafd3fcd01b85a2e8894e5dfe149eb0e0857;hp=f7a9aa297a86356459f1a856283ff5b1f663cc30;hpb=14a496fd0b3aa821b69eb02736d5f41086576761;p=ghc-hetmet.git diff --git a/compiler/iface/BinIface.hs b/compiler/iface/BinIface.hs index f7a9aa2..b1c97cd 100644 --- a/compiler/iface/BinIface.hs +++ b/compiler/iface/BinIface.hs @@ -19,6 +19,7 @@ import HscTypes import BasicTypes import Demand import Annotations +import CoreSyn import IfaceSyn import Module import Name @@ -1145,7 +1146,7 @@ instance Binary IfaceBinding where instance Binary IfaceIdDetails where put_ bh IfVanillaId = putByte bh 0 put_ bh (IfRecSelId a b) = do { putByte bh 1; put_ bh a; put_ bh b } - put_ bh IfDFunId = putByte bh 2 + put_ bh (IfDFunId n) = do { putByte bh 2; put_ bh n } get bh = do h <- getByte bh case h of @@ -1153,7 +1154,7 @@ instance Binary IfaceIdDetails where 1 -> do a <- get bh b <- get bh return (IfRecSelId a b) - _ -> return IfDFunId + _ -> do { n <- get bh; return (IfDFunId n) } instance Binary IfaceIdInfo where put_ bh NoInfo = putByte bh 0 @@ -1209,15 +1210,19 @@ instance Binary IfaceUnfolding where put_ bh b put_ bh c put_ bh d - put_ bh (IfWrapper a n) = do + put_ bh (IfLclWrapper a n) = do putByte bh 2 put_ bh a put_ bh n - put_ bh (IfDFunUnfold as) = do + put_ bh (IfExtWrapper a n) = do putByte bh 3 + put_ bh a + put_ bh n + put_ bh (IfDFunUnfold as) = do + putByte bh 4 put_ bh as put_ bh (IfCompulsory e) = do - putByte bh 4 + putByte bh 5 put_ bh e get bh = do h <- getByte bh @@ -1232,12 +1237,25 @@ instance Binary IfaceUnfolding where return (IfInlineRule a b c d) 2 -> do a <- get bh n <- get bh - return (IfWrapper a n) - 3 -> do as <- get bh + return (IfLclWrapper a n) + 3 -> do a <- get bh + n <- get bh + return (IfExtWrapper a n) + 4 -> do as <- get bh return (IfDFunUnfold as) _ -> do e <- get bh return (IfCompulsory e) +instance Binary (DFunArg IfaceExpr) where + put_ bh (DFunPolyArg e) = putByte bh 0 >> put_ bh e + put_ bh (DFunConstArg e) = putByte bh 1 >> put_ bh e + put_ bh (DFunLamArg i) = putByte bh 2 >> put_ bh i + get bh = do { h <- getByte bh + ; case h of + 0 -> do { a <- get bh; return (DFunPolyArg a) } + 1 -> do { a <- get bh; return (DFunConstArg a) } + _ -> do { a <- get bh; return (DFunLamArg a) } } + instance Binary IfaceNote where put_ bh (IfaceSCC aa) = do putByte bh 0