21 static const size_t min_page_remaining_size = 16;
24 static const size_t min_page_size = 128 * 1024;
38 void *NeverFreeMemory::
39 ns_alloc(
size_t size) {
49 Pages::iterator pi = _pages.lower_bound(Page(
nullptr, size));
50 if (pi != _pages.end()) {
54 void *result = page.alloc(size);
55 if (page._remaining >= min_page_remaining_size) {
64 size_t needed_size = std::max(size, min_page_size);
66 void *start = memory_hook->
mmap_alloc(needed_size,
false);
67 _total_alloc += needed_size;
69 Page page(start, needed_size);
70 void *result = page.alloc(size);
71 if (page._remaining >= min_page_remaining_size) {
81 void NeverFreeMemory::
85 ((
void * TVOLATILE &)_global_ptr,
nullptr, (
void *)ptr);
86 if (result !=
nullptr) {