Adding pushing of hpc translation status through hi files.
[ghc-hetmet.git] / compiler / iface / BinIface.hs
index 4664bf1..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