summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2020-11-18 11:23:00 +0000
committerMatthew Pickering <matthewtpickering@gmail.com>2021-03-03 19:09:34 +0000
commit8402ea951b31e01a925ca691747d1757eaf31fcc (patch)
tree674d19535ff5bbd3c31ae723e62b148f240f4bb1 /includes
parent2f7e879bd993b61d26db999246b34c1096d0f70e (diff)
downloadhaskell-8402ea951b31e01a925ca691747d1757eaf31fcc.tar.gz
Profiling by info table mode (-hi)
This profiling mode creates bands by the address of the info table for each closure. This provides a much more fine-grained profiling output than any of the other profiling modes. The `-hi` profiling mode does not require a profiling build.
Diffstat (limited to 'includes')
-rw-r--r--includes/rts/EventLogFormat.h3
-rw-r--r--includes/rts/Flags.h11
2 files changed, 8 insertions, 6 deletions
diff --git a/includes/rts/EventLogFormat.h b/includes/rts/EventLogFormat.h
index 340a12d4e9..4b50adfe5b 100644
--- a/includes/rts/EventLogFormat.h
+++ b/includes/rts/EventLogFormat.h
@@ -221,7 +221,8 @@ typedef enum {
HEAP_PROF_BREAKDOWN_TYPE_DESCR,
HEAP_PROF_BREAKDOWN_RETAINER,
HEAP_PROF_BREAKDOWN_BIOGRAPHY,
- HEAP_PROF_BREAKDOWN_CLOSURE_TYPE
+ HEAP_PROF_BREAKDOWN_CLOSURE_TYPE,
+ HEAP_PROF_BREAKDOWN_INFO_TABLE
} HeapProfBreakdown;
#if !defined(EVENTLOG_CONSTANTS_ONLY)
diff --git a/includes/rts/Flags.h b/includes/rts/Flags.h
index 204ec525ac..eda961656d 100644
--- a/includes/rts/Flags.h
+++ b/includes/rts/Flags.h
@@ -132,15 +132,16 @@ typedef struct _COST_CENTRE_FLAGS {
/* See Note [Synchronization of flags and base APIs] */
typedef struct _PROFILING_FLAGS {
uint32_t doHeapProfile;
-# define NO_HEAP_PROFILING 0 /* N.B. Used as indexes into arrays */
-# define HEAP_BY_CCS 1
-# define HEAP_BY_MOD 2
-# define HEAP_BY_DESCR 4
-# define HEAP_BY_TYPE 5
+# define NO_HEAP_PROFILING 0 /* N.B. Used as indexes into arrays */
+# define HEAP_BY_CCS 1
+# define HEAP_BY_MOD 2
+# define HEAP_BY_DESCR 4
+# define HEAP_BY_TYPE 5
# define HEAP_BY_RETAINER 6
# define HEAP_BY_LDV 7
# define HEAP_BY_CLOSURE_TYPE 8
+# define HEAP_BY_INFO_TABLE 9
Time heapProfileInterval; /* time between samples */
uint32_t heapProfileIntervalTicks; /* ticks between samples (derived) */