From d1e36a2fabea3c71a0b6729013a71432a7353a8e Mon Sep 17 00:00:00 2001 From: sewardj <unknown> Date: Mon, 17 Jan 2000 10:10:17 +0000 Subject: [PATCH] [project @ 2000-01-17 10:10:17 by sewardj] macroCode: implement PUSH_SEQ_FRAME --- ghc/compiler/nativeGen/StixMacro.lhs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ghc/compiler/nativeGen/StixMacro.lhs b/ghc/compiler/nativeGen/StixMacro.lhs index 02fef7fc2b31..44aead000ee8 100644 --- a/ghc/compiler/nativeGen/StixMacro.lhs +++ b/ghc/compiler/nativeGen/StixMacro.lhs @@ -13,7 +13,7 @@ import MachMisc import MachRegs import AbsCSyn ( CStmtMacro(..), MagicId(..), CAddrMode, tagreg, CCheckMacro(..) ) -import Constants ( uF_RET, uF_SU, uF_UPDATEE, uF_SIZE ) +import Constants ( uF_RET, uF_SU, uF_UPDATEE, uF_SIZE, sEQ_FRAME_SIZE ) import CallConv ( cCallConv ) import OrdList ( OrdList ) import PrimOp ( PrimOp(..) ) @@ -131,6 +131,17 @@ macroCode PUSH_UPD_FRAME args (StIndex PtrRep stgSp (StInt (toInteger (-uF_SIZE)))) in returnUs (\xs -> a1 : a3 : a4 : updSu : xs) + + +macroCode PUSH_SEQ_FRAME args + = let [arg_frame] = map amodeToStix args + frame n = StInd PtrRep + (StIndex PtrRep arg_frame (StInt (toInteger n))) + a1 = StAssign PtrRep (frame 0) seq_frame_info + a2 = StAssign PtrRep (frame 1) stgSu + updSu = StAssign PtrRep stgSu arg_frame + in + returnUs (\xs -> a1 : a2 : updSu : xs) \end{code} ----------------------------------------------------------------------------- @@ -145,8 +156,10 @@ macroCode SET_TAG [tag] case stgReg tagreg of Always _ -> returnUs id Save _ -> returnUs (\ xs -> set_tag : xs) + \end{code} + Do the business for a @HEAP_CHK@, having converted the args to Trees of StixOp. @@ -161,7 +174,8 @@ bh_info, ind_static_info, ind_info :: StixTree bh_info = sStLitLbl SLIT("BLACKHOLE_info") ind_static_info = sStLitLbl SLIT("IND_STATIC_info") ind_info = sStLitLbl SLIT("IND_info") -upd_frame_info = sStLitLbl SLIT("Upd_frame_entry") +upd_frame_info = sStLitLbl SLIT("Upd_frame_info") +seq_frame_info = sStLitLbl SLIT("seq_frame_info") -- Some common call trees -- GitLab