Use madvise(..., MADV_FREE) on OS X.
Use madvise(..., MADV_FREE) rather than msync(..., MS_KILLPAGES) on OS
X, since it works for at least OS X 10.5 and 10.6.
diff --git a/jemalloc/configure.ac b/jemalloc/configure.ac
index b613cb1..0ed1373 100644
--- a/jemalloc/configure.ac
+++ b/jemalloc/configure.ac
@@ -166,7 +166,7 @@
*-*-darwin*)
CFLAGS="$CFLAGS -fno-common -no-cpp-precomp"
abi="macho"
- AC_DEFINE([JEMALLOC_PURGE_MSYNC_KILLPAGES])
+ AC_DEFINE([JEMALLOC_PURGE_MADVISE_FREE])
RPATH=""
;;
*-*-freebsd*)
diff --git a/jemalloc/include/jemalloc/jemalloc_defs.h.in b/jemalloc/include/jemalloc/jemalloc_defs.h.in
index 54e5d94..b8f3f36 100644
--- a/jemalloc/include/jemalloc/jemalloc_defs.h.in
+++ b/jemalloc/include/jemalloc/jemalloc_defs.h.in
@@ -121,15 +121,12 @@
* madvise(..., MADV_DONTNEED) : On Linux, this immediately discards pages,
* such that new pages will be demand-zeroed if
* the address region is later touched.
- * madvise(..., MADV_FREE) : On FreeBSD, this marks pages as being unused,
- * such that they will be discarded rather than
- * swapped out.
- * msync(..., MS_KILLPAGES) : On Darwin, this behaves similarly to
- * madvise(..., MADV_FREE) on FreeBSD.
+ * madvise(..., MADV_FREE) : On FreeBSD and Darwin, this marks pages as being
+ * unused, such that they will be discarded rather
+ * than swapped out.
*/
#undef JEMALLOC_PURGE_MADVISE_DONTNEED
#undef JEMALLOC_PURGE_MADVISE_FREE
-#undef JEMALLOC_PURGE_MSYNC_KILLPAGES
/* sizeof(void *) == 2^LG_SIZEOF_PTR. */
#undef LG_SIZEOF_PTR
diff --git a/jemalloc/src/arena.c b/jemalloc/src/arena.c
index 00f425f..3d4f888 100644
--- a/jemalloc/src/arena.c
+++ b/jemalloc/src/arena.c
@@ -800,9 +800,6 @@
#elif defined(JEMALLOC_PURGE_MADVISE_FREE)
madvise((void *)((uintptr_t)chunk + (pageind << PAGE_SHIFT)),
(npages << PAGE_SHIFT), MADV_FREE);
-#elif defined(JEMALLOC_PURGE_MSYNC_KILLPAGES)
- msync((void *)((uintptr_t)chunk + (pageind << PAGE_SHIFT)),
- (npages << PAGE_SHIFT), MS_KILLPAGES);
#else
# error "No method defined for purging unused dirty pages."
#endif