[Support/Timer] Make GetMallocUsage() aware of jemalloc.
authorDavide Italiano <davide@freebsd.org>
Thu, 19 Feb 2015 07:27:14 +0000 (07:27 +0000)
committerDavide Italiano <davide@freebsd.org>
Thu, 19 Feb 2015 07:27:14 +0000 (07:27 +0000)
Differential Revision: D7657
Reviewed by: shankarke, majnemer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229824 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/config-ix.cmake
include/llvm/Config/config.h.cmake
include/llvm/Config/config.h.in
lib/Support/Unix/Process.inc

index 50f5859b34d85dd1cf3289cfbb83df84e3d1af65..8b04d087d44ebd266d71c32f647e97d1bb7faa5d 100755 (executable)
@@ -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)
index 32d0735628f479afcd7ed760aba2afc2e9c004f5..86ae8bb818e3f119657305f0d7d1f898ca27c26b 100644 (file)
 /* 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}
 
index 9827eeaea33eb594d46fe40c3b172fad9b41ec2f..c317bb114a9c58203a38a3406dc1474aa157929e 100644 (file)
 /* 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 <malloc.h> header file. */
 #undef HAVE_MALLOC_H
 
index 6e143f0795e62dfd97b6980f3caeb0c3b83aef19..f52ba191ac0f446d68cba8f2e733ebb6ec2a0071 100644 (file)
@@ -39,6 +39,9 @@
     !defined(__OpenBSD__) && !defined(__Bitrig__)
 #include <malloc.h>
 #endif
+#if defined(HAVE_MALLCTL)
+#include <malloc_np.h>
+#endif
 #ifdef HAVE_MALLOC_MALLOC_H
 #include <malloc/malloc.h>
 #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.