From b7b6617a90824303daf555c817f538cd9c792671 Mon Sep 17 00:00:00 2001 From: Ben Gamari Date: Tue, 1 May 2018 13:10:13 -0400 Subject: 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`. --- rts/ProfHeap.c | 5 +---- 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; -- cgit v1.2.1