Deleted Added
sdiff udiff text old ( 235238 ) new ( 242844 )
full compact
1#define JEMALLOC_CHUNK_MMAP_C_
2#include "jemalloc/internal/jemalloc_internal.h"
3
4/******************************************************************************/
5/* Function prototypes for non-inline static functions. */
6
7static void *pages_map(void *addr, size_t size);
8static void pages_unmap(void *addr, size_t size);

--- 99 unchanged lines hidden (view full) ---

108 pages_unmap(addr, leadsize);
109 if (trailsize != 0)
110 pages_unmap((void *)((uintptr_t)ret + size), trailsize);
111 return (ret);
112 }
113#endif
114}
115
116bool
117pages_purge(void *addr, size_t length)
118{
119 bool unzeroed;
120
121#ifdef _WIN32
122 VirtualAlloc(addr, length, MEM_RESET, PAGE_READWRITE);
123 unzeroed = true;
124#else
125# ifdef JEMALLOC_PURGE_MADVISE_DONTNEED
126# define JEMALLOC_MADV_PURGE MADV_DONTNEED
127# define JEMALLOC_MADV_ZEROS true
128# elif defined(JEMALLOC_PURGE_MADVISE_FREE)
129# define JEMALLOC_MADV_PURGE MADV_FREE
130# define JEMALLOC_MADV_ZEROS false
131# else
132# error "No method defined for purging unused dirty pages."
133# endif
134 int err = madvise(addr, length, JEMALLOC_MADV_PURGE);
135 unzeroed = (JEMALLOC_MADV_ZEROS == false || err != 0);
136# undef JEMALLOC_MADV_PURGE
137# undef JEMALLOC_MADV_ZEROS
138#endif
139 return (unzeroed);
140}
141
142static void *
143chunk_alloc_mmap_slow(size_t size, size_t alignment, bool *zero)
144{
145 void *ret, *pages;
146 size_t alloc_size, leadsize;
147

--- 63 unchanged lines hidden ---