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.
This commit is contained in:
parent
0d38791e7a
commit
ce93055c49
@ -166,7 +166,7 @@ case "${host}" in
|
||||
*-*-darwin*)
|
||||
CFLAGS="$CFLAGS -fno-common -no-cpp-precomp"
|
||||
abi="macho"
|
||||
AC_DEFINE([JEMALLOC_PURGE_MSYNC_KILLPAGES])
|
||||
AC_DEFINE([JEMALLOC_PURGE_MADVISE_FREE])
|
||||
RPATH=""
|
||||
;;
|
||||
*-*-freebsd*)
|
||||
|
@ -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
|
||||
|
@ -800,9 +800,6 @@ arena_chunk_purge(arena_t *arena, arena_chunk_t *chunk)
|
||||
#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
|
||||
|
Loading…
Reference in New Issue
Block a user