%
% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
%
-% $Id: CLabel.lhs,v 1.36 2000/05/22 17:05:57 simonmar Exp $
+% $Id: CLabel.lhs,v 1.37 2000/07/03 14:59:25 simonmar Exp $
%
\section[CLabel]{@CLabel@: Information to make C Labels}
mkErrorStdEntryLabel,
mkStgUpdatePAPLabel,
+ mkSplitMarkerLabel,
mkUpdInfoLabel,
mkSeqInfoLabel,
mkIndInfoLabel,
mkMainRegTableLabel,
mkCharlikeClosureLabel,
mkIntlikeClosureLabel,
- mkTopClosureLabel,
- mkErrorIO_innardsLabel,
mkMAP_FROZEN_infoLabel,
mkTopTickyCtrLabel,
| RtsMainRegTable -- MainRegTable (??? Capabilities wurble ???)
| Rts_Closure String -- misc rts closures, eg CHARLIKE_closure
| Rts_Info String -- misc rts itbls, eg MUT_ARR_PTRS_FROZEN_info
- | Rts_Code String -- misc rts code, eg ErrorIO_innards
+ | Rts_Code String -- misc rts code
| RtsSelectorInfoTbl Bool{-updatable-} Int{-offset-} -- Selector thunks
| RtsSelectorEntry Bool{-updatable-} Int{-offset-}
mkErrorStdEntryLabel = RtsLabel RtsShouldNeverHappenCode
mkStgUpdatePAPLabel = RtsLabel (Rts_Code "stg_update_PAP")
+mkSplitMarkerLabel = RtsLabel (Rts_Code "__stg_split_marker")
mkUpdInfoLabel = RtsLabel RtsUpdInfo
mkSeqInfoLabel = RtsLabel RtsSeqInfo
mkIndInfoLabel = RtsLabel (Rts_Info "IND_info")
mkMainRegTableLabel = RtsLabel RtsMainRegTable
mkCharlikeClosureLabel = RtsLabel (Rts_Closure "CHARLIKE_closure")
mkIntlikeClosureLabel = RtsLabel (Rts_Closure "INTLIKE_closure")
-mkTopClosureLabel = RtsLabel (Rts_Closure "TopClosure")
-mkErrorIO_innardsLabel = RtsLabel (Rts_Code "ErrorIO_innards")
mkMAP_FROZEN_infoLabel = RtsLabel (Rts_Info "MUT_ARR_PTRS_FROZEN_info")
mkTopTickyCtrLabel = RtsLabel RtsTopTickyCtr
import Constants ( mIN_UPD_SIZE )
import CLabel ( CLabel, mkReturnInfoLabel, mkReturnPtLabel,
mkClosureTblLabel, mkClosureLabel,
- moduleRegdLabel, labelDynamic )
+ moduleRegdLabel, labelDynamic,
+ mkSplitMarkerLabel )
import ClosureInfo ( infoTableLabelFromCI, entryLabelFromCI,
fastLabelFromCI, closureUpdReqd,
staticClosureNeedsLink
\end{code}
-Split markers are a NOP in this land.
+Split markers just insert a __stg_split_marker, which is caught by the
+split-mangler later on and used to split the assembly into chunks.
\begin{code}
- gencode CSplitMarker = returnUs id
+ gencode CSplitMarker = returnUs (\xs -> StLabel mkSplitMarkerLabel : xs)
\end{code}