Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
jberryman
GHC
Commits
649d5ed5
Commit
649d5ed5
authored
Jul 20, 2008
by
Thomas Schilling
Browse files
Fix Haddock errors.
parent
9f7dc570
Changes
4
Hide whitespace changes
Inline
Side-by-side
compiler/cmm/CmmCPSGen.hs
View file @
649d5ed5
...
...
@@ -58,7 +58,7 @@ data Continuation info =
-- Right <=> Function or Proc point
CLabel
-- Used to generate both info & entry labels
CmmFormalsWithoutKinds
-- Argument locals live on entry (C-- procedure params)
Bool
--
^
True <=> GC block so ignore stack size
Bool
-- True <=> GC block so ignore stack size
[
BrokenBlock
]
-- Code, may be empty. The first block is
-- the entry point. The order is otherwise initially
-- unimportant, but at some point the code gen will
...
...
@@ -177,12 +177,12 @@ continuationToProc (max_stack, update_frame_size, formats) stack_use uniques
main_stmts
=
case
entry
of
FunctionEntry
_
_
_
->
--
Ugh, t
he statements for an update frame must come
--
*after*
the GC check that was added at the beginning
--
of the
CPS pass. So we have do edit the statements
--
a bit.
This depends on the knowledge that the
--
statements in
the first block are only the GC check.
--
That's
fragile but it works for now.
--
T
he statements for an update frame must come
/after/
-- the GC check that was added at the beginning
of the
-- CPS pass. So we have do edit the statements
a bit.
-- This depends on the knowledge that the
statements in
-- the first block are only the GC check.
That's
-- fragile but it works for now.
gc_stmts
++
stmts
++
update_stmts
++
postfix_stmts
ControlEntry
->
stmts
++
postfix_stmts
ContinuationEntry
_
_
_
->
stmts
++
postfix_stmts
...
...
compiler/cmm/CmmContFlowOpt.hs
View file @
649d5ed5
...
...
@@ -58,7 +58,7 @@ branchChainElim (ListGraph blocks)
isLoneBranch
::
CmmBasicBlock
->
Either
(
BlockId
,
BlockId
)
CmmBasicBlock
isLoneBranch
(
BasicBlock
id
[
CmmBranch
target
])
|
id
/=
target
=
Left
(
id
,
target
)
isLoneBranch
other_block
=
Right
other_block
--
^
An infinite loop is not a link in a branch chain!
-- An infinite loop is not a link in a branch chain!
replaceLabels
::
BlockEnv
BlockId
->
CmmBasicBlock
->
CmmBasicBlock
replaceLabels
env
(
BasicBlock
id
stmts
)
...
...
@@ -95,7 +95,7 @@ isLoneBranchZ :: CmmBlock -> Either (BlockId, BlockId) CmmBlock
isLoneBranchZ
(
G
.
Block
id
(
G
.
ZLast
(
G
.
LastOther
(
LastBranch
target
))))
|
id
/=
target
=
Left
(
id
,
target
)
isLoneBranchZ
other
=
Right
other
--
^
An infinite loop is not a link in a branch chain!
-- An infinite loop is not a link in a branch chain!
replaceLabelsZ
::
BlockEnv
BlockId
->
CmmGraph
->
CmmGraph
replaceLabelsZ
env
=
replace_eid
.
G
.
map_nodes
id
id
last
...
...
compiler/cmm/CmmExpr.hs
View file @
649d5ed5
...
...
@@ -97,13 +97,13 @@ maybeInvertCmmExpr _ = Nothing
data
GCKind
=
GCKindPtr
|
GCKindNonPtr
deriving
(
Eq
)
data
LocalReg
=
LocalReg
!
Unique
-- ^ Identifier
MachRep
-- ^ Type
GCKind
-- ^ Should the GC follow as a pointer
-- | Sets of local registers
=
LocalReg
!
Unique
MachRep
GCKind
-- ^ Parameters:
-- 1. Identifier
-- 2. Type
-- 3. Should the GC follow as a pointer
-- Sets of local registers
type
RegSet
=
UniqSet
LocalReg
emptyRegSet
::
RegSet
elemRegSet
::
LocalReg
->
RegSet
->
Bool
...
...
compiler/cmm/CmmInfo.hs
View file @
649d5ed5
...
...
@@ -78,7 +78,7 @@ mkInfoTable :: Unique -> CmmTop -> [RawCmmTop]
mkInfoTable
uniq
(
CmmData
sec
dat
)
=
[
CmmData
sec
dat
]
mkInfoTable
uniq
(
CmmProc
(
CmmInfo
_
_
info
)
entry_label
arguments
blocks
)
=
case
info
of
--
|
Code without an info table. Easy.
-- Code without an info table. Easy.
CmmNonInfoTable
->
[
CmmProc
[]
entry_label
arguments
blocks
]
CmmInfoTable
(
ProfilingInfo
ty_prof
cl_prof
)
type_tag
type_info
->
...
...
@@ -86,7 +86,7 @@ mkInfoTable uniq (CmmProc (CmmInfo _ _ info) entry_label arguments blocks) =
ty_prof'
=
makeRelativeRefTo
info_label
ty_prof
cl_prof'
=
makeRelativeRefTo
info_label
cl_prof
in
case
type_info
of
--
|
A function entry point.
-- A function entry point.
FunInfo
(
ptrs
,
nptrs
)
srt
fun_type
fun_arity
pap_bitmap
slow_entry
->
mkInfoTableAndCode
info_label
std_info
fun_extra_bits
entry_label
arguments
blocks
...
...
@@ -104,7 +104,7 @@ mkInfoTable uniq (CmmProc (CmmInfo _ _ info) entry_label arguments blocks) =
(
srt_label
,
srt_bitmap
)
=
mkSRTLit
info_label
srt
layout
=
packHalfWordsCLit
ptrs
nptrs
--
|
A constructor.
-- A constructor.
ConstrInfo
(
ptrs
,
nptrs
)
con_tag
descr
->
mkInfoTableAndCode
info_label
std_info
[
con_name
]
entry_label
arguments
blocks
...
...
@@ -113,7 +113,7 @@ mkInfoTable uniq (CmmProc (CmmInfo _ _ info) entry_label arguments blocks) =
con_name
=
makeRelativeRefTo
info_label
descr
layout
=
packHalfWordsCLit
ptrs
nptrs
--
|
A thunk.
-- A thunk.
ThunkInfo
(
ptrs
,
nptrs
)
srt
->
mkInfoTableAndCode
info_label
std_info
srt_label
entry_label
arguments
blocks
...
...
@@ -122,7 +122,7 @@ mkInfoTable uniq (CmmProc (CmmInfo _ _ info) entry_label arguments blocks) =
(
srt_label
,
srt_bitmap
)
=
mkSRTLit
info_label
srt
layout
=
packHalfWordsCLit
ptrs
nptrs
--
|
A selector thunk.
-- A selector thunk.
ThunkSelectorInfo
offset
srt
->
mkInfoTableAndCode
info_label
std_info
[
{- no SRT -}
]
entry_label
arguments
blocks
...
...
@@ -200,9 +200,11 @@ mkSRTLit info_label (C_SRT lbl off bitmap) =
-- TODO: combine with CgCallConv.mkLiveness (see comment there)
mkLiveness
::
Unique
->
[
Maybe
LocalReg
]
->
(
CmmLit
,
-- ^ The bitmap (literal value or label)
[
RawCmmTop
],
-- ^ Large bitmap CmmData if needed
ClosureTypeTag
)
-- ^ rET_SMALL or rET_BIG
->
(
CmmLit
,
[
RawCmmTop
],
ClosureTypeTag
)
-- ^ Returns:
-- 1. The bitmap (literal value or label)
-- 2. Large bitmap CmmData if needed
-- 3. rET_SMALL or rET_BIG
mkLiveness
uniq
live
=
if
length
bits
>
mAX_SMALL_BITMAP_SIZE
-- does not fit in one word
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment