diff --git a/src/lisp/gencgc.c b/src/lisp/gencgc.c index c2aa983bede7bd4426487f36a7f835cc41e4bcde..fc1f7dd168fe7813995e6e5b5577e617006dac2d 100644 --- a/src/lisp/gencgc.c +++ b/src/lisp/gencgc.c @@ -6987,8 +6987,15 @@ free_oldspace(void) if (gencgc_debug_madvise) { fprintf(stderr, "ADVISING pages %d-%d\n", first_page, last_page - 1); } -#if 1 - madvise(page_start, GC_PAGE_SIZE * (last_page - first_page), MADV_ZERO_WIRED_PAGES); + +#if defined(__linux__) +#define GENCGC_MADVISE MADV_DONTNEED +#else +#define GENCGC_MADVISE MADV_FREE +#endif + +#if 1 || !defined(__linux__) + madvise(page_start, GC_PAGE_SIZE * (last_page - first_page), GENCGC_MADVISE); #else page_start = (int *) page_address(first_page); memset(page_start, 0, GC_PAGE_SIZE * (last_page - first_page));