]> git.saurik.com Git - redis.git/commitdiff
Don't use prefix when malloc_size() can be called
authorPieter Noordhuis <pcnoordhuis@gmail.com>
Sat, 23 Oct 2010 07:59:28 +0000 (09:59 +0200)
committerPieter Noordhuis <pcnoordhuis@gmail.com>
Sat, 23 Oct 2010 07:59:28 +0000 (09:59 +0200)
Also, use tcmalloc functions explicitly via macros to prevent symbol
lookups to resolve to native malloc/free on OSX.

src/config.h
src/zmalloc.c

index e2d84818714b2515af68b6c7fb178c5f66eeaba2..62f808f5d6a1d8b6ee4d73a41c353883a1a55a48 100644 (file)
@@ -5,8 +5,17 @@
 #include <AvailabilityMacros.h>
 #endif
 
-/* test for malloc_size() */
-#ifdef __APPLE__
+/* use tcmalloc's malloc_size() when available */
+#if defined(USE_TCMALLOC)
+#include <google/tcmalloc.h>
+#if TC_VERSION_MAJOR >= 1 && TC_VERSION_MINOR >= 6
+#define HAVE_MALLOC_SIZE 1
+#define redis_malloc_size(p) tc_malloc_size(p)
+#endif
+#endif
+
+/* fallback to native malloc_size() for osx */
+#if defined(__APPLE__) && !defined(HAVE_MALLOC_SIZE)
 #include <malloc/malloc.h>
 #define HAVE_MALLOC_SIZE 1
 #define redis_malloc_size(p) malloc_size(p)
index 544155e78792413554c8d206500450ef0dba820c..8cfb18d940f23b105439bd090d61fa87e4be3987 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 #include <pthread.h>
-
 #include "config.h"
 
+#ifdef HAVE_MALLOC_SIZE
+#define PREFIX_SIZE (0)
+#else
 #if defined(__sun)
-#define PREFIX_SIZE sizeof(long long)
+#define PREFIX_SIZE (sizeof(long long))
 #else
-#define PREFIX_SIZE sizeof(size_t)
+#define PREFIX_SIZE (sizeof(size_t))
+#endif
+#endif
+
+/* Explicitly override malloc/free etc when using tcmalloc. */
+#if defined(USE_TCMALLOC)
+#define malloc(size) tc_malloc(size)
+#define calloc(count,size) tc_calloc(count,size)
+#define realloc(ptr,size) tc_realloc(ptr,size)
+#define free(ptr) tc_free(ptr)
 #endif
 
 #define increment_used_memory(__n) do { \