Support for jemalloc to replace dlmalloc.
To use jemalloc, add MALLOC_IMPL = jemalloc in a board config file
and you get the new version automatically.
Update the pthread_create_key tests since jemalloc uses a few keys.
Add a new test to verify memalign works as expected.
Bug: 981363
Change-Id: I16eb152b291a95bd2499e90492fc6b4bd7053836
diff --git a/libc/Android.mk b/libc/Android.mk
index 53a122e..543b4b4 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -498,6 +498,16 @@
libc_common_cflags += -DDEBUG
endif
+ifeq ($(MALLOC_IMPL),jemalloc)
+ libc_common_cflags += -DUSE_JEMALLOC
+
+ libc_malloc_src := bionic/jemalloc.cpp
+else
+ libc_common_cflags += -DUSE_DLMALLOC
+
+ libc_malloc_src := bionic/dlmalloc.cpp
+endif
+
# To customize dlmalloc's alignment, set BOARD_MALLOC_ALIGNMENT in
# the appropriate BoardConfig.mk file.
#
@@ -526,6 +536,10 @@
$(LOCAL_PATH)/stdlib \
$(LOCAL_PATH)/stdio \
+ifeq ($(MALLOC_IMPL),jemalloc)
+ libc_common_c_includes += external/jemalloc/include
+endif
+
# ========================================================
# Add in the arch-specific flags.
# Must be called with $(eval).
@@ -812,6 +826,11 @@
libc_syscalls \
libc_tzcode \
+ifeq ($(MALLOC_IMPL),jemalloc)
+LOCAL_WHOLE_STATIC_LIBRARIES += \
+ libjemalloc
+endif
+
LOCAL_SYSTEM_SHARED_LIBRARIES :=
# TODO: split out the asflags.
@@ -866,7 +885,7 @@
LOCAL_SRC_FILES := \
$(libc_arch_static_src_files) \
$(libc_static_common_src_files) \
- bionic/dlmalloc.c \
+ $(libc_malloc_src) \
bionic/malloc_debug_common.cpp \
bionic/libc_init_static.cpp \
@@ -896,11 +915,10 @@
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
-
LOCAL_SRC_FILES := \
$(libc_arch_dynamic_src_files) \
$(libc_static_common_src_files) \
- bionic/dlmalloc.c \
+ $(libc_malloc_src) \
bionic/malloc_debug_common.cpp \
bionic/debug_mapinfo.cpp \
bionic/debug_stacktrace.cpp \