| 324 | } |
| 325 | |
| 326 | bool |
| 327 | pages_purge_forced(void *addr, size_t size) { |
| 328 | assert(PAGE_ADDR2BASE(addr) == addr); |
| 329 | assert(PAGE_CEILING(size) == size); |
| 330 | |
| 331 | if (!pages_can_purge_forced) { |
| 332 | return true; |
| 333 | } |
| 334 | |
| 335 | #if defined(JEMALLOC_PURGE_MADVISE_DONTNEED) && \ |
| 336 | defined(JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS) |
| 337 | return (madvise(addr, size, MADV_DONTNEED) != 0); |
| 338 | #elif defined(JEMALLOC_MAPS_COALESCE) |
| 339 | /* Try to overlay a new demand-zeroed mapping. */ |
| 340 | return pages_commit(addr, size); |
| 341 | #else |
| 342 | not_reached(); |
| 343 | #endif |
| 344 | } |
| 345 | |
| 346 | static bool |
| 347 | pages_huge_impl(void *addr, size_t size, bool aligned) { |
no test coverage detected