X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FcodeGen%2FCgUpdate.lhs;h=1eec8f6be916745d43167c44ffa2d6bf566565c8;hb=d4e0cee2445d9845bb7b0a0687bad84ff32bac28;hp=9164a2edefaabe2cf2432edab5303a7ed830c808;hpb=e1db55d8bd07c79bae30f548e597f709dd029155;p=ghc-hetmet.git diff --git a/ghc/compiler/codeGen/CgUpdate.lhs b/ghc/compiler/codeGen/CgUpdate.lhs index 9164a2e..1eec8f6 100644 --- a/ghc/compiler/codeGen/CgUpdate.lhs +++ b/ghc/compiler/codeGen/CgUpdate.lhs @@ -11,7 +11,7 @@ module CgUpdate ( pushUpdateFrame, reserveSeqFrame, pushSeqFrame ) where import CgMonad import AbsCSyn -import Constants ( uF_SIZE, sCC_UF_SIZE, sEQ_FRAME_SIZE ) +import Constants ( uF_SIZE, sCC_UF_SIZE, sEQ_FRAME_SIZE, sCC_SEQ_FRAME_SIZE ) import PrimRep ( PrimRep(..) ) import CgStackery ( allocUpdateFrame ) import CgUsages ( getSpRelOffset ) @@ -71,13 +71,16 @@ args_sp. When the scrutinee comes around to pushing a return address, it will also push the SEQ frame, using pushSeqFrame. \begin{code} +seq_frame_size | opt_SccProfilingOn = sCC_SEQ_FRAME_SIZE + | otherwise = sEQ_FRAME_SIZE + reserveSeqFrame :: EndOfBlockInfo -> EndOfBlockInfo reserveSeqFrame (EndOfBlockInfo args_sp (CaseAlts amode stuff)) - = EndOfBlockInfo (args_sp + sEQ_FRAME_SIZE) (SeqFrame amode stuff) + = EndOfBlockInfo (args_sp + seq_frame_size) (SeqFrame amode stuff) pushSeqFrame :: VirtualSpOffset -> FCode VirtualSpOffset pushSeqFrame args_sp = getSpRelOffset args_sp `thenFC` \ sp_rel -> absC (CMacroStmt PUSH_SEQ_FRAME [CAddr sp_rel]) `thenC` - returnFC (args_sp - sEQ_FRAME_SIZE) + returnFC (args_sp - seq_frame_size) \end{code}