Loading...
--- libmalloc/libmalloc-140.1.1/src/purgeable_malloc.c
+++ libmalloc/libmalloc-116/src/purgeable_malloc.c
@@ -135,7 +135,7 @@
}
if (!old_size) {
- szone_error(szone->debug_flags, 1, "pointer being reallocated was not allocated", ptr, NULL);
+ szone_error(szone, 1, "pointer being reallocated was not allocated", ptr, NULL);
return NULL;
}
@@ -186,16 +186,16 @@
large = szone->large_entries + index;
if (large->address) {
// we deallocate_pages, including guard pages
- mvm_deallocate_pages((void *)(large->address), large->size, szone->debug_flags);
+ deallocate_pages(szone, (void *)(large->address), large->size, szone->debug_flags);
}
}
large_entries_free_no_lock(szone, szone->large_entries, szone->num_large_entries, &range_to_deallocate);
if (range_to_deallocate.size) {
- mvm_deallocate_pages((void *)range_to_deallocate.address, (size_t)range_to_deallocate.size, 0);
+ deallocate_pages(szone, (void *)range_to_deallocate.address, (size_t)range_to_deallocate.size, 0);
}
/* Now destroy the separate szone region */
- mvm_deallocate_pages((void *)szone, SZONE_PAGED_SIZE, 0);
+ deallocate_pages(szone, (void *)szone, SZONE_PAGED_SIZE, 0);
}
static unsigned
@@ -334,7 +334,7 @@
uint64_t hw_memsize = 0;
/* get memory for the zone. */
- szone = mvm_allocate_pages(SZONE_PAGED_SIZE, 0, 0, VM_MEMORY_MALLOC);
+ szone = allocate_pages(NULL, SZONE_PAGED_SIZE, 0, 0, VM_MEMORY_MALLOC);
if (!szone) {
return NULL;
}
@@ -353,8 +353,21 @@
sysctlbyname("hw.memsize", &hw_memsize, &uint64_t_size, 0, 0);
#endif
- rack_init(&szone->tiny_rack, RACK_TYPE_TINY, 0, debug_flags | MALLOC_PURGEABLE);
- rack_init(&szone->small_rack, RACK_TYPE_SMALL, 0, debug_flags | MALLOC_PURGEABLE);
+ szone->trg[0].nextgen = &(szone->trg[1]);
+ szone->trg[1].nextgen = &(szone->trg[0]);
+ szone->tiny_region_generation = &(szone->trg[0]);
+
+ szone->tiny_region_generation->hashed_regions = szone->initial_tiny_regions;
+ szone->tiny_region_generation->num_regions_allocated = INITIAL_NUM_REGIONS;
+ szone->tiny_region_generation->num_regions_allocated_shift = INITIAL_NUM_REGIONS_SHIFT;
+
+ szone->srg[0].nextgen = &(szone->srg[1]);
+ szone->srg[1].nextgen = &(szone->srg[0]);
+ szone->small_region_generation = &(szone->srg[0]);
+
+ szone->small_region_generation->hashed_regions = szone->initial_small_regions;
+ szone->small_region_generation->num_regions_allocated = INITIAL_NUM_REGIONS;
+ szone->small_region_generation->num_regions_allocated_shift = INITIAL_NUM_REGIONS_SHIFT;
/* Purgeable zone does not participate in the adaptive "largemem" sizing. */
szone->is_largemem = 0;
@@ -362,8 +375,8 @@
szone->vm_copy_threshold = VM_COPY_THRESHOLD;
#if CONFIG_LARGE_CACHE
- // madvise(..., MADV_REUSABLE) death-row arrivals above this threshold [~0.1%]
- szone->large_entry_cache_reserve_limit = (size_t)(hw_memsize >> 10);
+ szone->large_entry_cache_reserve_limit =
+ hw_memsize >> 10; // madvise(..., MADV_REUSABLE) death-row arrivals above this threshold [~0.1%]
/* <rdar://problem/6610904> Reset protection when returning a previous large allocation? */
int32_t libSystemVersion = NSVersionOfLinkTimeLibrary("System");