[GHC] #10613: Mechanism for checking that we only enter single-entry thunks once
GHC
ghc-devs at haskell.org
Tue Dec 22 10:46:59 UTC 2015
#10613: Mechanism for checking that we only enter single-entry thunks once
-------------------------------------+-------------------------------------
Reporter: bgamari | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.10.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: Other | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
> It seems that if a certain static thunk is created ''n'' times, then it
will report ''n'' entries; whereas in the scope of this ticket we want to
know that each allocated thunk was entered once.
Yes exactly. Let's call the code that allocates the thunk the '''thunk
allocation site'''. For some of these sites, cardinality analysis may say
"this is a single-entry thunk". Call those the ''single-entry thunk
allocation sites''' and the others the '''multi-entry thunk allocation
sites'''.
* For each single-entry thunk allocation site, we'd like to know if any of
the thunks it allocates are entered more than once. (This would mean that
the analysis was unsound.)
* For each multi-entry allocation site, we'd like to know if all the
thunks it allocates are entered at most once. This is a possible missed
opportunity to make it a single-entry site. (Only "possible" because in a
different run it might be entered more than once.)
* For all allocation sites we'd like to know if every thunk allocated
there was never entered; that's a possible missed opportunity for absence.
A counting indirection sounds like the right kind of thing.
I would also like to count lambdas! So for the STG binding
{{{
f = \xy. e
}}}
* How many times do I call f (ie enter the closure)? That is, is it a
one-shot lambda.
* Do I ever partially apply it, or is it always saturated?
Similar technology might do the job.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10613#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list