#7771: RTS should provide stg_sel_n_noupd_closure
---------------------------------+------------------------------------------
Reporter: simonpj | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.6.2
Keywords: | Os: Unknown/Multiple
Architecture: Unknown/Multiple | Failure: None/Unknown
Difficulty: Unknown | Testcase:
Blockedby: | Blocking:
Related: |
---------------------------------+------------------------------------------
In `StgStdThunks.cmm` we define info tables `stg_sel_1_upd_info`, etc, for
"selector thunks", thus:
{{{
#define SELECTOR_CODE_UPD(offset) \
INFO_TABLE_SELECTOR(stg_sel_##offset##_upd, offset, THUNK_SELECTOR,
"stg_sel_upd", "stg_sel_upd") \
(P_ node) \
...etc...
}}}
But we should ALSO define info tables for ''non-updatable'' selector
thunks, thus `stg_sel_1_nonupd_info` etc. We didn't generate any such
selectors before, but now I'm implementing cardinality analysis, we are.
Would it be possible to beef up this macro to to generate both info
tables? Simply omit the update for the `nonupd` version. (It wasn't
quite obvious to me how to do this.)
That would allow me to get rid of this hack in `CLabel`
{{{
pprCLbl (RtsLabel (RtsSelectorInfoTable _upd_reqd offset))
= hcat [ptext (sLit "stg_sel_"), text (show offset),
ptext (sLit "_upd_info")
-- RTS only has updatable selector thunks at the moment
-- so we use just them
-- ptext (if upd_reqd
-- then (sLit "_upd_info")
-- else (sLit "_noupd_info"))
]
}}}
Thanks
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7771>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
ghc-tickets mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-tickets