Adding pushing of hpc translation status through hi files.
[ghc-hetmet.git] / compiler / iface / BinIface.hs
index 0ffd37d..d79ec95 100644 (file)
@@ -34,6 +34,7 @@ import Config
 import FastMutInt
 import Outputable
 
+import Data.List
 import Data.Word
 import Data.Array
 import Data.IORef
@@ -294,7 +295,8 @@ instance Binary ModIface where
                 mi_fam_insts = fam_insts,
                 mi_rules     = rules,
                 mi_rule_vers = rule_vers,
-                 mi_vect_info = vect_info }) = do
+                 mi_vect_info = vect_info,
+                mi_hpc       = hpc_info }) = do
        put_ bh mod
        put_ bh is_boot
        put_ bh mod_vers
@@ -312,6 +314,7 @@ instance Binary ModIface where
        lazyPut bh rules
        put_ bh rule_vers
         put_ bh vect_info
+       put_ bh hpc_info
 
    get bh = do
        mod_name  <- get bh
@@ -331,6 +334,7 @@ instance Binary ModIface where
        rules     <- {-# SCC "bin_rules" #-} lazyGet bh
        rule_vers <- get bh
         vect_info <- get bh
+        hpc_info  <- get bh
        return (ModIface {
                 mi_module    = mod_name,
                 mi_boot      = is_boot,
@@ -350,6 +354,7 @@ instance Binary ModIface where
                 mi_rules     = rules,
                 mi_rule_vers = rule_vers,
                  mi_vect_info = vect_info,
+                mi_hpc       = hpc_info,
                        -- And build the cached values
                 mi_dep_fn    = mkIfaceDepCache deprecs,
                 mi_fix_fn    = mkIfaceFixCache fixities,
@@ -888,6 +893,10 @@ instance Binary IfaceExpr where
             putByte bh 11
             put_ bh ie
             put_ bh ico
+    put_ bh (IfaceTick m ix) = do
+            putByte bh 12
+            put_ bh m
+            put_ bh ix
     get bh = do
            h <- getByte bh
            case h of
@@ -927,6 +936,9 @@ instance Binary IfaceExpr where
               11 -> do ie <- get bh
                        ico <- get bh
                        return (IfaceCast ie ico)
+              12 -> do m <- get bh
+                       ix <- get bh
+                       return (IfaceTick m ix)
 
 instance Binary IfaceConAlt where
     put_ bh IfaceDefault = do
@@ -1222,10 +1234,14 @@ instance Binary IfaceRule where
            return (IfaceRule a1 a2 a3 a4 a5 a6 a7)
 
 instance Binary IfaceVectInfo where
-    put_ bh (IfaceVectInfo a1) = do
+    put_ bh (IfaceVectInfo a1 a2 a3) = do
            put_ bh a1
+           put_ bh a2
+           put_ bh a3
     get bh = do
            a1 <- get bh
-           return (IfaceVectInfo a1)
+           a2 <- get bh
+           a3 <- get bh
+           return (IfaceVectInfo a1 a2 a3)