[project @ 1996-03-19 08:58:34 by partain]
[ghc-hetmet.git] / ghc / compiler / codeGen / CgUpdate.lhs
index 40daf37..92ceaa4 100644 (file)
@@ -6,9 +6,7 @@
 \begin{code}
 #include "HsVersions.h"
 
-module CgUpdate (
-       pushUpdateFrame -- OLD: , evalPushRCCFrame
-    ) where
+module CgUpdate ( pushUpdateFrame ) where
 
 import StgSyn
 import CgMonad
@@ -45,7 +43,7 @@ pushUpdateFrame :: CAddrMode -> CAddrMode -> Code -> Code
 pushUpdateFrame updatee vector code
   = isSwitchSetC SccProfilingOn                `thenFC` \ profiling_on ->
     let
-       -- frame_size *includes* the return address 
+       -- frame_size *includes* the return address
        frame_size = if profiling_on
                     then sCC_STD_UF_SIZE
                     else sTD_UF_SIZE
@@ -72,7 +70,7 @@ int_CLit0 = mkIntCLit 0 -- out here to avoid pushUpdateFrame CAF (sigh)
     pushOnBStack (CReg SuA)                            `thenFC` \ _ ->
     pushOnBStack (CReg SuB)                            `thenFC` \ _ ->
     pushOnBStack updatee                               `thenFC` \ _ ->
-    pushOnBStack (CLabel sTD_UPD_RET_VEC_LABEL CodePtrKind) `thenFC` \ _ ->
+    pushOnBStack (CLabel sTD_UPD_RET_VEC_LABEL CodePtrRep) `thenFC` \ _ ->
 
        -- MAKE SuA, SuB POINT TO TOP OF A,B STACKS
        -- Remember, SpB hasn't yet been incremented to account for the
@@ -82,74 +80,3 @@ int_CLit0 = mkIntCLit 0 -- out here to avoid pushUpdateFrame CAF (sigh)
                    (CAssign (CReg SuB) (CAddr (SpBRel 0 4))))
 -------------------------- -}
 \end{code}
-
-@evalPushRCCFrame@ pushes a frame to restore the cost centre, and
-deallocates stuff from the A and B stack if evaluation profiling. No
-actual update is required so no closure to update is passed.
-@evalPushRCCFrame@ is called for an @scc@ expression and on entry to a
-single-entry thunk: no update reqd but cost centre manipulation is.
-
-\begin{code}
-{- OLD: WDP: 94/06
-
-evalPushRCCFrame :: Bool -> Code -> Code
-
-evalPushRCCFrame prim code
-  = isSwitchSetC SccProfiling_Eval     `thenFC` \ eval_profiling ->
-
-    if (not eval_profiling) then 
-       code
-    else
-
-       -- Find out how many words of stack must will be
-       --   deallocated at the end of the basic block
-       -- As we push stuff onto the B stack we must make the
-       -- RCC frame dealocate the B stack words
-
-       -- We dont actually push things onto the A stack so we
-       --   can treat the A stack as if these words were not there
-       --   i.e. we subtract them from the A stack offset
-       -- They will be popped by the current block of code
-
-       -- Tell downstream code about the update frame on the B stack
-    allocUpdateFrame 
-               sCC_RCC_UF_SIZE 
-               (panic "pushEvalRCCFrame: mkRestoreCostCentreLbl")
-               (\ (old_args_spa, old_args_spb, upd_frame_offset) ->
-
-    getSpARelOffset old_args_spa       `thenFC` \ old_args_spa_rel ->
-    getSpBRelOffset upd_frame_offset   `thenFC` \ upd_frame_rel ->
-
-    let b_wds_to_pop = upd_frame_offset - old_args_spb
-    in
-
-       -- Allocate enough space on the B stack for the frame
-
-    evalCostCentreC
-            (if prim then 
-                    "PUSH_RCC_FRAME_RETURN"
-                else
-                    "PUSH_RCC_FRAME_VECTOR")
-            [
-               mkIntCLit (spARelToInt old_args_spa_rel),
-                       {- Place on A stack to ``draw the line'' -}
-               mkIntCLit (spBRelToInt upd_frame_rel),
-                       {- Ditto B stk.  The update frame is pushed starting 
-                          just above here -}
-               mkIntCLit 0,
-                       {- Number of words of A below the line, which must be
-                          popped to get to the tail-call position -}
-               mkIntCLit b_wds_to_pop
-                       {- Ditto B stk -}
-            ]                          `thenC`
-
-    code
-
-
-       -- If we actually pushed things onto the A stack we have
-       --   to arrange for the RCC frame to pop these as well
-       -- Would need to tell downstream code about the update frame
-       --   both the A and B stacks
-    )
--}
-\end{code}