From: Davide Italiano Date: Thu, 19 Feb 2015 07:27:14 +0000 (+0000) Subject: [Support/Timer] Make GetMallocUsage() aware of jemalloc. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=d6f86b8614613687fd83f9034ff80704722fe5a4 [Support/Timer] Make GetMallocUsage() aware of jemalloc. Differential Revision: D7657 Reviewed by: shankarke, majnemer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229824 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index 50f5859b34d..8b04d087d44 100755 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -163,6 +163,7 @@ if( HAVE_SYS_UIO_H ) check_symbol_exists(writev sys/uio.h HAVE_WRITEV) endif() check_symbol_exists(nearbyintf math.h HAVE_NEARBYINTF) +check_symbol_exists(mallctl malloc_np.h HAVE_MALLCTL) check_symbol_exists(mallinfo malloc.h HAVE_MALLINFO) check_symbol_exists(malloc_zone_statistics malloc/malloc.h HAVE_MALLOC_ZONE_STATISTICS) diff --git a/include/llvm/Config/config.h.cmake b/include/llvm/Config/config.h.cmake index 32d0735628f..86ae8bb818e 100644 --- a/include/llvm/Config/config.h.cmake +++ b/include/llvm/Config/config.h.cmake @@ -222,6 +222,9 @@ /* Define to 1 if you have the `malloc_zone_statistics' function. */ #cmakedefine HAVE_MALLOC_ZONE_STATISTICS ${HAVE_MALLOC_ZONE_STATISTICS} +/* Define to 1 if you have the `mallctl` function. */ +#cmakedefine HAVE_MALLCTL ${HAVE_MALLCTL} + /* Define to 1 if you have the `mkdtemp' function. */ #cmakedefine HAVE_MKDTEMP ${HAVE_MKDTEMP} diff --git a/include/llvm/Config/config.h.in b/include/llvm/Config/config.h.in index 9827eeaea33..c317bb114a9 100644 --- a/include/llvm/Config/config.h.in +++ b/include/llvm/Config/config.h.in @@ -210,6 +210,9 @@ /* Define if mallinfo() is available on this platform. */ #undef HAVE_MALLINFO +/* Define if mallctl() is available on this plaform. */ +#undef HAVE_MALLCTL + /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H diff --git a/lib/Support/Unix/Process.inc b/lib/Support/Unix/Process.inc index 6e143f0795e..f52ba191ac0 100644 --- a/lib/Support/Unix/Process.inc +++ b/lib/Support/Unix/Process.inc @@ -39,6 +39,9 @@ !defined(__OpenBSD__) && !defined(__Bitrig__) #include #endif +#if defined(HAVE_MALLCTL) +#include +#endif #ifdef HAVE_MALLOC_MALLOC_H #include #endif @@ -98,6 +101,13 @@ size_t Process::GetMallocUsage() { malloc_statistics_t Stats; malloc_zone_statistics(malloc_default_zone(), &Stats); return Stats.size_in_use; // darwin +#elif defined(HAVE_MALLCTL) + size_t alloc, sz; + sz = sizeof(size_t); + if (mallctl("stats.allocated", &alloc, &sz, NULL, 0) == 0) + return alloc; + else + return 0; #elif defined(HAVE_SBRK) // Note this is only an approximation and more closely resembles // the value returned by mallinfo in the arena field.