From 2ebe47be924ec18a1e154fe50707aa18d43542c0 Mon Sep 17 00:00:00 2001 From: chak Date: Fri, 3 Dec 1999 15:55:29 +0000 Subject: [PATCH] [project @ 1999-12-03 15:55:29 by chak] Corrected time stamp calculation for .hp files. --- ghc/rts/ProfRts.h | 7 +------ ghc/rts/Stats.c | 33 +++++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/ghc/rts/ProfRts.h b/ghc/rts/ProfRts.h index 883672f..2ffe8c3 100644 --- a/ghc/rts/ProfRts.h +++ b/ghc/rts/ProfRts.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: ProfRts.h,v 1.6 1999/09/16 12:29:55 simonmar Exp $ + * $Id: ProfRts.h,v 1.7 1999/12/03 15:55:29 chak Exp $ * * (c) The GHC Team, 1998-1999 * @@ -17,15 +17,10 @@ void endProfiling ( void ); void report_ccs_profiling ( void ); void heap_profile_finish (void); -void initProfiling ( void ); -void endProfiling ( void ); - void PrintNewStackDecls ( void ); void print_ccs (FILE *, CostCentreStack *); -void report_ccs_profiling( void ); - # define DEFAULT_INTERVAL TICK_FREQUENCY extern rtsBool time_profiling; diff --git a/ghc/rts/Stats.c b/ghc/rts/Stats.c index 1c5d243..4739c78 100644 --- a/ghc/rts/Stats.c +++ b/ghc/rts/Stats.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Stats.c,v 1.18 1999/11/11 13:17:36 simonmar Exp $ + * $Id: Stats.c,v 1.19 1999/12/03 15:55:29 chak Exp $ * * (c) The GHC Team, 1998-1999 * @@ -160,9 +160,15 @@ elapsedtime(void) /* mut_user_time_during_GC() and mut_user_time() * - * This function can be used to get the current mutator time *during* - * a GC, i.e. between stat_startGC and stat_endGC. This is used in - * the heap profiler for accurately time stamping the heap sample. + * The former function can be used to get the current mutator time + * *during* a GC, i.e. between stat_startGC and stat_endGC. This is + * used in the heap profiler for accurately time stamping the heap + * sample. + * + * ATTENTION: mut_user_time_during_GC() relies on GC_start_time being + * defined in stat_startGC() - to minimise system calls, + * GC_start_time is, however, only defined when really needed (check + * stat_startGC() for details) */ double mut_user_time_during_GC(void) @@ -354,6 +360,11 @@ stat_endExit(void) static nat rub_bell = 0; +/* initialise global variables needed during GC + * + * * GC_start_time is read in mut_user_time_during_GC(), which in turn is + * needed if either PROFILING or DEBUGing is enabled + */ void stat_startGC(void) { @@ -370,8 +381,14 @@ stat_startGC(void) } } +#if defined(PROFILING) || defined(DEBUG) + GC_start_time = usertime(); /* needed in mut_user_time_during_GC() */ +#endif + if (sf != NULL) { - GC_start_time = usertime(); +#if !defined(PROFILING) && !defined(DEBUG) + GC_start_time = usertime(); +#endif GCe_start_time = elapsedtime(); if (RtsFlags.GcFlags.giveStats) { GC_start_faults = pagefaults(); @@ -391,8 +408,8 @@ stat_endGC(lnat alloc, lnat collect, lnat live, lnat copied, lnat gen) if (sf != NULL) { double time = usertime(); double etime = elapsedtime(); - double gc_time = time-GC_start_time; - double gc_etime = etime-GCe_start_time; + double gc_time = time - GC_start_time; + double gc_etime = etime - GCe_start_time; if (RtsFlags.GcFlags.giveStats >= VERBOSE_GC_STATS) { nat faults = pagefaults(); @@ -412,7 +429,7 @@ stat_endGC(lnat alloc, lnat collect, lnat live, lnat copied, lnat gen) fflush(sf); } - GC_coll_times[gen] += time-GC_start_time; + GC_coll_times[gen] += gc_time; GC_tot_copied += (ullong) copied; GC_tot_alloc += (ullong) alloc; -- 1.7.10.4