FIX panic from the GHC API
[ghc-hetmet.git] / compiler / codeGen / CgHpc.hs
index f70d159..ed58daa 100644 (file)
@@ -17,10 +17,12 @@ import CgUtils
 import CgMonad
 import CgForeignCall
 import ForeignCall
+import ClosureInfo
 import FastString
 import HscTypes
 import Char
 import StaticFlags
+import PackageConfig 
 
 cgTickBox :: Module -> Int -> Code
 cgTickBox mod n = do
@@ -34,15 +36,13 @@ cgTickBox mod n = do
                                                , CmmLit (CmmInt 1 I64)
                                                ])
               ] 
-   where
-      visible_tick = mkFastString "hs_hpc_tick"
 
 hpcTable :: Module -> HpcInfo -> Code
 hpcTable this_mod (HpcInfo hpc_tickCount _) = do
                         emitData ReadOnlyData
                                         [ CmmDataLabel mkHpcModuleNameLabel
                                         , CmmString $ map (fromIntegral . ord)
-                                                         (module_name_str)
+                                                         (full_name_str)
                                                       ++ [0]
                                         ]
                         emitData Data $ [ CmmDataLabel (mkHpcTicksLabel this_mod)
@@ -52,11 +52,16 @@ hpcTable this_mod (HpcInfo hpc_tickCount _) = do
                                         ]
   where
     module_name_str = moduleNameString (Module.moduleName this_mod)
+    full_name_str   = if modulePackageId this_mod == mainPackageId 
+                     then module_name_str
+                     else packageIdString (modulePackageId this_mod) ++ "/" ++
+                          module_name_str
+
 hpcTable this_mod (NoHpcInfo) = error "TODO: impossible"
 
 initHpc :: Module -> HpcInfo -> Code
 initHpc this_mod (HpcInfo tickCount hashNo)
-  = do { id <- newTemp wordRep
+  = do { id <- newNonPtrTemp wordRep -- TODO FIXME NOW
        ; emitForeignCall'
                PlayRisky
                [(id,NoHint)]
@@ -70,6 +75,7 @@ initHpc this_mod (HpcInfo tickCount hashNo)
                , (CmmLit $ CmmLabel $ mkHpcTicksLabel $ this_mod,PtrHint)
                ]
                (Just [])
+               NoC_SRT -- No SRT b/c we PlayRisky
        }
   where
        mod_alloc = mkFastString "hs_hpc_module"