Loading...
--- libmalloc/libmalloc-657.60.21/src/magazine_rack.c
+++ libmalloc/libmalloc-140.1.1/src/magazine_rack.c
@@ -54,10 +54,9 @@
 	if (num_magazines > 0) {
 		// num_magazines + 1, the [-1] index will become the depot magazine
 		size_t magsize = round_page_quanta(sizeof(magazine_t) * (num_magazines + 1));
-		magazine_t *magazines = mvm_allocate_pages(magsize, 0,
-				MALLOC_ADD_GUARD_PAGE_FLAGS|DISABLE_ASLR, VM_MEMORY_MALLOC);
+		magazine_t *magazines = mvm_allocate_pages(magsize, 0, MALLOC_ADD_GUARD_PAGES, VM_MEMORY_MALLOC);
 		if (!magazines) {
-			MALLOC_REPORT_FATAL_ERROR(0, "unable to allocate magazine array");
+			MALLOC_PRINTF_FATAL_ERROR(0, "unable to allocate magazine array");
 		}
 
 		rack->magazines = &magazines[1];
@@ -77,11 +76,9 @@
 
 		_malloc_lock_init(&rack->region_lock);
 		_malloc_lock_init(&rack->magazines[DEPOT_MAGAZINE_INDEX].magazine_lock);
-		_malloc_lock_init(&rack->magazines[DEPOT_MAGAZINE_INDEX].magazine_alloc_lock);
 
 		for (int i=0; i < rack->num_magazines; i++) {
 			_malloc_lock_init(&rack->magazines[i].magazine_lock);
-			_malloc_lock_init(&rack->magazines[i].magazine_alloc_lock);
 		}
 	}
 }
@@ -94,7 +91,7 @@
 		if ((rack->region_generation->hashed_regions[i] != HASHRING_OPEN_ENTRY) &&
 			(rack->region_generation->hashed_regions[i] != HASHRING_REGION_DEALLOCATED))
 		{
-			mvm_deallocate_pages(rack->region_generation->hashed_regions[i], region_size, MALLOC_FIX_GUARD_PAGE_FLAGS(rack->debug_flags));
+			mvm_deallocate_pages(rack->region_generation->hashed_regions[i], region_size, 0);
 			rack->region_generation->hashed_regions[i] = HASHRING_REGION_DEALLOCATED;
 		}
 	}
@@ -111,7 +108,7 @@
 
 	if (rack->num_magazines > 0) {
 		size_t size = round_page_quanta(sizeof(magazine_t) * (rack->num_magazines + 1));
-		mvm_deallocate_pages(&rack->magazines[-1], size, MALLOC_ADD_GUARD_PAGE_FLAGS);
+		mvm_deallocate_pages(&rack->magazines[-1], size, MALLOC_ADD_GUARD_PAGES);
 		rack->magazines = NULL;
 	}
 }
@@ -145,11 +142,10 @@
 		rack->region_generation->nextgen->num_regions_allocated = new_size;
 		rack->region_generation->nextgen->num_regions_allocated_shift = new_shift;
 
+		// Throw the switch to atomically advance to the next generation.
+		rack->region_generation = rack->region_generation->nextgen;
 		// Ensure everyone sees the advance.
 		OSMemoryBarrier();
-
-		// Throw the switch to atomically advance to the next generation.
-		rack->region_generation = rack->region_generation->nextgen;
 	}
 
 	// Insert the new region into the hash ring, and update malloc statistics
@@ -161,93 +157,3 @@
 	rack->num_regions++;
 	_malloc_lock_unlock(&rack->region_lock);
 }
-
-bool
-rack_region_remove(rack_t *rack, region_t region, region_trailer_t *trailer)
-{
-	bool rv = true;
-
-	rack_region_lock(rack);
-	rgnhdl_t pSlot = hash_lookup_region_no_lock(
-			rack->region_generation->hashed_regions,
-			rack->region_generation->num_regions_allocated,
-			rack->region_generation->num_regions_allocated_shift,
-			region);
-
-	if ((trailer->dispose_flags & RACK_DISPOSE_DELAY) != 0) {
-		// Still remove this region from the hash table but don't allow the
-		// current caller to deallocate the region until the pressure thread is
-		// done with it.
-		trailer->dispose_flags |= RACK_DISPOSE_NEEDED;
-		rv = false;
-	}
-
-	if (NULL == pSlot) {
-		malloc_zone_error(rack->debug_flags, true,
-				"tiny_free_try_depot_unmap_no_lock hash lookup failed: %p\n",
-				region);
-		rv = false;
-	} else {
-		// Invalidate the hash table entry for this region with
-		// HASHRING_REGION_DEALLOCATED.  Using HASHRING_REGION_DEALLOCATED
-		// preserves the collision chain, using HASHRING_OPEN_ENTRY (0) would not.
-		*pSlot = HASHRING_REGION_DEALLOCATED;
-
-		// Atomically increment num_regions_dealloc
-#ifdef __LP64__
-		OSAtomicIncrement64((int64_t *)&rack->num_regions_dealloc);
-#else
-		OSAtomicIncrement32((int32_t *)&rack->num_regions_dealloc);
-#endif
-	}
-
-	rack_region_unlock(rack);
-	return rv;
-}
-
-bool
-rack_region_maybe_dispose(rack_t *rack, region_t region, size_t region_size,
-		region_trailer_t *trailer)
-{
-	bool rv = false;
-	rack_region_lock(rack);
-
-	if ((trailer->dispose_flags & RACK_DISPOSE_NEEDED) != 0) {
-		// We tried to dispose of this region while the pressure thread was
-		// using it, so now that it's finished we can deallocate it now.
-		mvm_deallocate_pages((void *)region, region_size,
-				MALLOC_FIX_GUARD_PAGE_FLAGS(rack->debug_flags));
-		rv = true;
-	} else {
-		trailer->dispose_flags &= ~RACK_DISPOSE_DELAY;
-	}
-	rack_region_unlock(rack);
-	return rv;
-}
-
-
-unsigned int
-rack_get_thread_index(rack_t *rack)
-{
-	mag_index_t index;
-	if (os_likely(_os_cpu_number_override == -1)) {
-		index = _malloc_cpu_number();
-#if CONFIG_MAGAZINE_PER_CLUSTER
-		if (rack->num_magazines == ncpuclusters) {
-			index = _malloc_cpu_cluster_number();
-		}
-#endif // CONFIG_MAGAZINE_PER_CLUSTER
-	} else {
-		index = _os_cpu_number_override;
-#if CONFIG_MAGAZINE_PER_CLUSTER
-		if (rack->num_magazines == ncpuclusters) {
-			index = _malloc_get_cluster_from_cpu(_os_cpu_number_override);
-		}
-#endif // CONFIG_MAGAZINE_PER_CLUSTER
-	}
-#if CONFIG_SZONE_USES_HYPER_SHIFT
-	return index >> hyper_shift;
-#else // CONFIG_SZONE_USES_HYPER_SHIFT
-	return index;
-#endif // CONFIG_SZONE_USES_HYPER_SHIFT
-}