diff options
author | Ben Gamari <ben@smart-cactus.org> | 2018-05-01 13:10:13 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2018-05-01 14:58:25 -0400 |
commit | b7b6617a90824303daf555c817f538cd9c792671 (patch) | |
tree | eb26a98e3c18f46d1003bc39d45dfb2106f6566d | |
parent | 260e23b4033f92c1d7326a60320067922ef06da2 (diff) | |
download | haskell-b7b6617a90824303daf555c817f538cd9c792671.tar.gz |
rts: Allow profiling by closure type in prof way
Previously we inexplicably disabled support for `-hT` profiling in the profiled
way. Admittedly, there are relatively few cases where one would prefer -hT to
`-hd`, but the option should nevertheless be available for the sake of
consistency.
Note that this does mean that there is a bit of an inconsistency in the behavior
of `-h`: in the profiled way `-h` behaves like `-hc` whereas in the non-profiled
way it defaults to `-hT`.
-rw-r--r-- | rts/ProfHeap.c | 5 | ||||
-rw-r--r-- | rts/RtsFlags.c | 6 |
2 files changed, 5 insertions, 6 deletions
diff --git a/rts/ProfHeap.c b/rts/ProfHeap.c index 4a7b6d38a8..55d22ff153 100644 --- a/rts/ProfHeap.c +++ b/rts/ProfHeap.c @@ -127,8 +127,8 @@ closureIdentity( const StgClosure *p ) return retainerSetOf(p); else return NULL; +#endif -#else case HEAP_BY_CLOSURE_TYPE: { const StgInfoTable *info; @@ -147,7 +147,6 @@ closureIdentity( const StgClosure *p ) } } -#endif default: barf("closureIdentity"); } @@ -815,7 +814,6 @@ dumpCensus( Census *census ) if (count == 0) continue; -#if !defined(PROFILING) switch (RtsFlags.ProfFlags.doHeapProfile) { case HEAP_BY_CLOSURE_TYPE: fprintf(hp_file, "%s", (char *)ctr->identity); @@ -823,7 +821,6 @@ dumpCensus( Census *census ) count * sizeof(W_)); break; } -#endif #if defined(PROFILING) switch (RtsFlags.ProfFlags.doHeapProfile) { diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index eb226ed3bd..461c41643c 100644 --- a/rts/RtsFlags.c +++ b/rts/RtsFlags.c @@ -343,10 +343,9 @@ usage_text[] = { " -xt Include threads (TSOs) in a heap profile", "", " -xc Show current cost centre stack on raising an exception", -#else +#endif /* PROFILING */ "", " -hT Produce a heap profile grouped by closure type" -#endif /* PROFILING */ #if defined(TRACING) "", @@ -1956,6 +1955,9 @@ static bool read_heap_profiling_flag(const char *arg) case 'b': RtsFlags.ProfFlags.doHeapProfile = HEAP_BY_LDV; break; + case 'T': + RtsFlags.ProfFlags.doHeapProfile = HEAP_BY_CLOSURE_TYPE; + break; } break; |