Changes in directory llvm/lib/System/Unix:
Process.inc updated: 1.11 -> 1.12 --- Log message: Teach -track-memory to work on darwin. Looking at sbrk doesn't work because the default allocator uses mmap. --- Diffs of the changes: (+12 -10) Process.inc | 22 ++++++++++++---------- 1 files changed, 12 insertions(+), 10 deletions(-) Index: llvm/lib/System/Unix/Process.inc diff -u llvm/lib/System/Unix/Process.inc:1.11 llvm/lib/System/Unix/Process.inc:1.12 --- llvm/lib/System/Unix/Process.inc:1.11 Thu May 5 17:33:06 2005 +++ llvm/lib/System/Unix/Process.inc Mon Nov 14 01:00:29 2005 @@ -21,6 +21,9 @@ #ifdef HAVE_MALLOC_H #include <malloc.h> #endif +#ifdef HAVE_MALLOC_MALLOC_H +#include <malloc/malloc.h> +#endif //===----------------------------------------------------------------------===// //=== WARNING: Implementation here must contain only generic UNIX code that @@ -43,23 +46,20 @@ return static_cast<unsigned>(page_size); } -#if defined(HAVE_SBRK) -static char* som = reinterpret_cast<char*>(::sbrk(0)); -#endif - -size_t -Process::GetMallocUsage() -{ +size_t Process::GetMallocUsage() { #if defined(HAVE_MALLINFO) struct mallinfo mi; mi = ::mallinfo(); return mi.uordblks; +#elif defined(HAVE_MSTATS) && defined(HAVE_MALLOC_MALLOC_H) + return mstats().bytes_used; // darwin #elif defined(HAVE_SBRK) // Note this is only an approximation and more closely resembles // the value returned by mallinfo in the arena field. - char * eom = (char*) sbrk(0); - if (eom != ((char*)-1) && som != ((char*)-1)) - return eom - som; + static char *StartOfMemory = reinterpret_cast<char*>(::sbrk(0)); + char *EndOfMemory = (char*)sbrk(0); + if (EndOfMemory != ((char*)-1) && StartOfMemory != ((char*)-1)) + return EndOfMemory - StartOfMemory; else return 0; #else @@ -74,6 +74,8 @@ #if defined(HAVE_MALLINFO) struct mallinfo mi = ::mallinfo(); return mi.uordblks + mi.hblkhd; +#elif defined(HAVE_MSTATS) && defined(HAVE_MALLOC_MALLOC_H) + return mstats().bytes_total; // darwin #elif defined(HAVE_GETRUSAGE) struct rusage usage; ::getrusage(RUSAGE_SELF, &usage); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits