From 71d6db2260d3d5c3395818cd18564193845555e6 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Thu, 30 Mar 2006 13:41:58 +0000 Subject: [PATCH] fix profiling on Win32 The recent patch to free memory in hs_exit() on Win32 unfortunately broke profiling, because it freed the memory slightly too early. --- ghc/configure.ac | 2 +- ghc/rts/RtsStartup.c | 10 ++++++---- ghc/rts/Storage.c | 5 +++++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ghc/configure.ac b/ghc/configure.ac index b6d9a4c..77b5497 100644 --- a/ghc/configure.ac +++ b/ghc/configure.ac @@ -1,5 +1,5 @@ # Initialise and check sanity. -AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.5], [glasgow-haskell-bugs@haskell.org], [ghc]) +AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.5.20060329], [glasgow-haskell-bugs@haskell.org], [ghc]) AC_CONFIG_SRCDIR([ghc.spec.in]) # duplicate from ../configure.ac diff --git a/ghc/rts/RtsStartup.c b/ghc/rts/RtsStartup.c index faf4596..32c73f4 100644 --- a/ghc/rts/RtsStartup.c +++ b/ghc/rts/RtsStartup.c @@ -373,9 +373,8 @@ hs_exit(void) /* stop timing the shutdown, we're about to print stats */ stat_endExit(); - /* clean up things from the storage manager's point of view. - * also outputs the stats (+RTS -s) info. - */ + // clean up things from the storage manager's point of view. + // also outputs the stats (+RTS -s) info. exitStorage(); #ifdef RTS_GTK_FRONTPANEL @@ -398,7 +397,7 @@ hs_exit(void) // during endProfiling(). fclose(prof_file); #endif - + #if defined(TICKY_TICKY) if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo(); #endif @@ -406,6 +405,9 @@ hs_exit(void) #if defined(mingw32_HOST_OS) shutdownAsyncIO(); #endif + + // Finally, free all our storage. + freeStorage(); } // Compatibility interfaces diff --git a/ghc/rts/Storage.c b/ghc/rts/Storage.c index 5e00a57..974be45 100644 --- a/ghc/rts/Storage.c +++ b/ghc/rts/Storage.c @@ -266,6 +266,11 @@ void exitStorage (void) { stat_exit(calcAllocated()); +} + +void +freeStorage (void) +{ freeAllMBlocks(); } -- 1.7.10.4