... | ... | @@ -14,16 +14,4 @@ Cost-centre profiling operates at something close to the source level, and ticky |
|
|
## Ticky-ticky profiling
|
|
|
|
|
|
|
|
|
(The following are my notes as I try to get this working again. Once it is working, I'll turn it into something more coherent. -krc)
|
|
|
|
|
|
|
|
|
Macros for bumping ticky counters are now defined in [includes/Cmm.h](/trac/ghc/browser/ghc/includes/Cmm.h). Currently, code compiled with the `-fticky-ticky` flag fails to link because the macros rely on counter variables (things with names like `ENT_DYN_IND_ctr` being declared, but there are actually no declarations for them. I'll add those declarations to [includes/RtsExternal.h](/trac/ghc/browser/ghc/includes/RtsExternal.h) so I can get something working. Really, there should be something that automatically generates both the macros that are in [includes/Cmm.h](/trac/ghc/browser/ghc/includes/Cmm.h) and the declarations for the corresponding variables, so that they stay in sync.
|
|
|
|
|
|
|
|
|
Actually, maybe it would make more sense to add a new file, `RtsTicky.h` or something, which contains only ticky counter declarations (the same declarations that still exist in [includes/StgTicky.h](/trac/ghc/browser/ghc/includes/StgTicky.h), which isn't used anymore), and that include that from [includes/RtsExternal.h](/trac/ghc/browser/ghc/includes/RtsExternal.h).
|
|
|
|
|
|
|
|
|
No -- put actual declarations for counter variables in another file, `TickyCounters.h` or something, and include that only from [rts/Ticky.c](/trac/ghc/browser/ghc/rts/Ticky.c); put *extern* declarations for those counters in `RtsTicky.h`, still included from [includes/RtsExternal.h](/trac/ghc/browser/ghc/includes/RtsExternal.h). Then later we can automatically generate both `RtsTicky.h` and `TickyCounters.h`. The reason for this is that the ticky **macros** are all over the place and they refer to the ticky counters, so the ticky counters have to be **declared** someplace that everyone includes, but of course the actual initializations only need to happen in one place. (Maybe there's a better way to do this...)
|
|
|
|
|
|
|
|
|
No, there don't need to be two files; I was confused. Just `TickyCounters.h`. |
|
|
([The following](commentary/profiling/ticky-notes) are my notes as I try to get this working again. Once it is working, I'll turn it into something more coherent. -krc) |