summaryrefslogtreecommitdiff
path: root/compiler/codeGen/ClosureInfo.lhs
diff options
context:
space:
mode:
authorMax Bolingbroke <batterseapower@hotmail.com>2011-07-28 23:37:55 +0100
committerMax Bolingbroke <batterseapower@hotmail.com>2011-07-28 23:37:55 +0100
commitf778dae938d6d92d90c00be6b230fe1208834081 (patch)
tree58b6a2edc69a2127d0e3c86ccaec1b0e29b29d68 /compiler/codeGen/ClosureInfo.lhs
parent81c6183dca435a0f03ec3342f8c116d5f9de2ea6 (diff)
downloadhaskell-f778dae938d6d92d90c00be6b230fe1208834081.tar.gz
Put the info CLabel in CmmInfoTable rather than a localness flag, tidy up some info<->entry conversions
Diffstat (limited to 'compiler/codeGen/ClosureInfo.lhs')
-rw-r--r--compiler/codeGen/ClosureInfo.lhs16
1 files changed, 8 insertions, 8 deletions
diff --git a/compiler/codeGen/ClosureInfo.lhs b/compiler/codeGen/ClosureInfo.lhs
index ad2ea4fddd..6964de7273 100644
--- a/compiler/codeGen/ClosureInfo.lhs
+++ b/compiler/codeGen/ClosureInfo.lhs
@@ -29,7 +29,7 @@ module ClosureInfo (
closureGoodStuffSize, closurePtrsSize,
slopSize,
- infoTableLabelFromCI,
+ infoTableLabelFromCI, entryLabelFromCI,
closureLabelFromCI,
isLFThunk, closureUpdReqd,
closureNeedsUpdSpace, closureIsThunk,
@@ -50,7 +50,7 @@ module ClosureInfo (
isToplevClosure,
closureValDescr, closureTypeDescr, -- profiling
- closureInfoLocal, isStaticClosure,
+ isStaticClosure,
cafBlackHoleClosureInfo,
staticClosureNeedsLink,
@@ -847,10 +847,6 @@ staticClosureRequired _ _ _ = True
%************************************************************************
\begin{code}
-closureInfoLocal :: ClosureInfo -> Bool
-closureInfoLocal ClosureInfo{ closureInfLcl = lcl } = lcl
-closureInfoLocal ConInfo{} = False
-
isStaticClosure :: ClosureInfo -> Bool
isStaticClosure cl_info = isStaticRep (closureSMRep cl_info)
@@ -931,8 +927,9 @@ Label generation.
\begin{code}
infoTableLabelFromCI :: ClosureInfo -> CLabel
infoTableLabelFromCI cl@(ClosureInfo { closureName = name,
- closureLFInfo = lf_info })
- = case lf_info of
+ closureLFInfo = lf_info,
+ closureInfLcl = is_lcl })
+ = (if is_lcl then localiseLabel else id) $ case lf_info of
LFBlackHole info -> info
LFThunk _ _ upd_flag (SelectorThunk offset) _ ->
@@ -954,6 +951,9 @@ infoTableLabelFromCI cl@(ConInfo { closureCon = con,
where
name = dataConName con
+entryLabelFromCI :: ClosureInfo -> CLabel
+entryLabelFromCI = infoLblToEntryLbl . infoTableLabelFromCI
+
-- ClosureInfo for a closure (as opposed to a constructor) is always local
closureLabelFromCI :: ClosureInfo -> CLabel
closureLabelFromCI cl@(ClosureInfo { closureName = nm }) = mkLocalClosureLabel nm $ clHasCafRefs cl