summaryrefslogtreecommitdiff
path: root/rts/Trace.h
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2019-10-09 14:32:13 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-10-23 05:58:58 -0400
commit17987a4b665d4a270b1bebba1f61d67887f2653c (patch)
tree922a01003b495c1a0cdf9457f7ecbb4985e20578 /rts/Trace.h
parentb521e8b698cc415684fbc0ea5ddfab51077cb144 (diff)
downloadhaskell-17987a4b665d4a270b1bebba1f61d67887f2653c.tar.gz
eventlog: Dump cost centre stack on each sample
With this change it is possible to reconstruct the timing portion of a `.prof` file after the fact. By logging the stacks at each time point a more precise executation trace of the program can be observed rather than all identical cost centres being identified in the report. There are two new events: 1. `EVENT_PROF_BEGIN` - emitted at the start of profiling to communicate the tick interval 2. `EVENT_PROF_SAMPLE_COST_CENTRE` - emitted on each tick to communicate the current call stack. Fixes #17322
Diffstat (limited to 'rts/Trace.h')
-rw-r--r--rts/Trace.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/rts/Trace.h b/rts/Trace.h
index d3bb226000..b7db0ca912 100644
--- a/rts/Trace.h
+++ b/rts/Trace.h
@@ -301,6 +301,10 @@ void traceHeapProfCostCentre(StgWord32 ccID,
StgBool is_caf);
void traceHeapProfSampleCostCentre(StgWord8 profile_id,
CostCentreStack *stack, StgWord residency);
+
+void traceProfSampleCostCentre(Capability *cap,
+ CostCentreStack *stack, StgWord ticks);
+void traceProfBegin(void);
#endif /* PROFILING */
void flushTrace(void);