Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
Tobias Decking
GHC
Commits
39b41e2c
Commit
39b41e2c
authored
Jul 18, 2007
by
Michael D. Adams
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Made the label generation in the Cmm parser more direct
parent
c23fe488
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
23 deletions
+12
-23
compiler/cmm/CLabel.hs
compiler/cmm/CLabel.hs
+1
-7
compiler/cmm/CmmParse.y
compiler/cmm/CmmParse.y
+11
-16
No files found.
compiler/cmm/CLabel.hs
View file @
39b41e2c
...
...
@@ -95,7 +95,7 @@ module CLabel (
mkHpcTicksLabel
,
mkHpcModuleNameLabel
,
infoLblToEntryLbl
,
entryLblToInfoLbl
,
infoLblToRetLbl
,
infoLblToEntryLbl
,
entryLblToInfoLbl
,
needsCDecl
,
isAsmTemp
,
maybeAsmTemp
,
externallyVisibleCLabel
,
CLabelType
(
..
),
labelType
,
labelDynamic
,
...
...
@@ -462,12 +462,6 @@ entryLblToInfoLbl (RtsLabel (RtsEntryFS s)) = RtsLabel (RtsInfoFS s)
entryLblToInfoLbl
(
RtsLabel
(
RtsRetFS
s
))
=
RtsLabel
(
RtsRetInfoFS
s
)
entryLblToInfoLbl
l
=
pprPanic
"CLabel.entryLblToInfoLbl"
(
pprCLabel
l
)
infoLblToRetLbl
::
CLabel
->
CLabel
infoLblToRetLbl
(
RtsLabel
(
RtsInfo
s
))
=
RtsLabel
(
RtsRet
s
)
infoLblToRetLbl
(
RtsLabel
(
RtsInfoFS
s
))
=
RtsLabel
(
RtsRetFS
s
)
infoLblToRetLbl
(
RtsLabel
(
RtsRetInfoFS
s
))
=
RtsLabel
(
RtsRetFS
s
)
infoLblToRetLbl
_
=
panic
"CLabel.infoLblToRetLbl"
-- -----------------------------------------------------------------------------
-- Does a CLabel need declaring before use or not?
...
...
compiler/cmm/CmmParse.y
View file @
39b41e2c
...
...
@@ -201,19 +201,19 @@ lits :: { [ExtFCode CmmExpr] }
cmmproc :: { ExtCode }
-- TODO: add real SRT/info tables to parsed Cmm
: info maybe_formals maybe_frame maybe_gc_block '{' body '}'
{ do ((
info_lbl,
entry_ret_label, info, live, formals, frame, gc_block), stmts) <-
{ do ((entry_ret_label, info, live, formals, frame, gc_block), stmts) <-
getCgStmtsEC' $ loopDecls $ do {
(
info_lbl,
entry_ret_label, info, live) <- $1;
(entry_ret_label, info, live) <- $1;
formals <- sequence $2;
frame <- $3;
gc_block <- $4;
$6;
return (
info_lbl,
entry_ret_label, info, live, formals, frame, gc_block) }
return (entry_ret_label, info, live, formals, frame, gc_block) }
blks <- code (cgStmtsToBlocks stmts)
code (emitInfoTableAndCode entry_ret_label (CmmInfo gc_block frame info) formals blks) }
| info maybe_formals ';'
{ do (
info_lbl,
entry_ret_label, info, live) <- $1;
{ do (entry_ret_label, info, live) <- $1;
formals <- sequence $2;
code (emitInfoTableAndCode entry_ret_label (CmmInfo Nothing Nothing info) formals []) }
...
...
@@ -228,12 +228,11 @@ cmmproc :: { ExtCode }
blks <- code (cgStmtsToBlocks stmts)
code (emitProc (CmmInfo gc_block frame CmmNonInfoTable) (mkRtsCodeLabelFS $1) formals blks) }
info :: { ExtFCode (CLabel,
CLabel,
CmmInfoTable, [Maybe LocalReg]) }
info :: { ExtFCode (CLabel, CmmInfoTable, [Maybe LocalReg]) }
: 'INFO_TABLE' '(' NAME ',' INT ',' INT ',' INT ',' STRING ',' STRING ')'
-- ptrs, nptrs, closure type, description, type
{ do prof <- profilingInfo $11 $13
let infoLabel = mkRtsInfoLabelFS $3
return (infoLabel, infoLblToEntryLbl infoLabel,
return (mkRtsEntryLabelFS $3,
CmmInfoTable prof (fromIntegral $9)
(ThunkInfo (fromIntegral $5, fromIntegral $7) NoC_SRT),
[]) }
...
...
@@ -241,8 +240,7 @@ info :: { ExtFCode (CLabel, CLabel, CmmInfoTable, [Maybe LocalReg]) }
| 'INFO_TABLE_FUN' '(' NAME ',' INT ',' INT ',' INT ',' STRING ',' STRING ',' INT ')'
-- ptrs, nptrs, closure type, description, type, fun type
{ do prof <- profilingInfo $11 $13
let infoLabel = mkRtsInfoLabelFS $3
return (infoLabel, infoLblToEntryLbl infoLabel,
return (mkRtsEntryLabelFS $3,
CmmInfoTable prof (fromIntegral $9)
(FunInfo (fromIntegral $5, fromIntegral $7) NoC_SRT (fromIntegral $15) 0
(ArgSpec 0)
...
...
@@ -257,8 +255,7 @@ info :: { ExtFCode (CLabel, CLabel, CmmInfoTable, [Maybe LocalReg]) }
-- If profiling is on, this string gets duplicated,
-- but that's the way the old code did it we can fix it some other time.
desc_lit <- code $ mkStringCLit $13
let infoLabel = mkRtsInfoLabelFS $3
return (infoLabel, infoLblToEntryLbl infoLabel,
return (mkRtsEntryLabelFS $3,
CmmInfoTable prof (fromIntegral $11)
(ConstrInfo (fromIntegral $5, fromIntegral $7) (fromIntegral $9) desc_lit),
[]) }
...
...
@@ -266,8 +263,7 @@ info :: { ExtFCode (CLabel, CLabel, CmmInfoTable, [Maybe LocalReg]) }
| 'INFO_TABLE_SELECTOR' '(' NAME ',' INT ',' INT ',' STRING ',' STRING ')'
-- selector, closure type, description, type
{ do prof <- profilingInfo $9 $11
let infoLabel = mkRtsInfoLabelFS $3
return (infoLabel, infoLblToEntryLbl infoLabel,
return (mkRtsEntryLabelFS $3,
CmmInfoTable prof (fromIntegral $7)
(ThunkSelectorInfo (fromIntegral $5) NoC_SRT),
[]) }
...
...
@@ -275,7 +271,7 @@ info :: { ExtFCode (CLabel, CLabel, CmmInfoTable, [Maybe LocalReg]) }
| 'INFO_TABLE_RET' '(' NAME ',' INT ')'
-- closure type (no live regs)
{ do let infoLabel = mkRtsInfoLabelFS $3
return (
infoLabel, infoLblToRetLbl infoLabel
,
return (
mkRtsRetLabelFS $3
,
CmmInfoTable (ProfilingInfo zeroCLit zeroCLit) (fromIntegral $5)
(ContInfo [] NoC_SRT),
[]) }
...
...
@@ -283,8 +279,7 @@ info :: { ExtFCode (CLabel, CLabel, CmmInfoTable, [Maybe LocalReg]) }
| 'INFO_TABLE_RET' '(' NAME ',' INT ',' formals0 ')'
-- closure type, live regs
{ do live <- sequence (map (liftM Just) $7)
let infoLabel = mkRtsInfoLabelFS $3
return (infoLabel, infoLblToRetLbl infoLabel,
return (mkRtsRetLabelFS $3,
CmmInfoTable (ProfilingInfo zeroCLit zeroCLit) (fromIntegral $5)
(ContInfo live NoC_SRT),
live) }
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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