Loading...
--- libmalloc/libmalloc-657.80.3/src/malloc.c
+++ libmalloc/libmalloc-646.40.3/src/malloc.c
@@ -1363,11 +1363,11 @@
max_medium_magazines = max_magazines;
}
- // Don't enable for pre-AMP iOS hardware, which we identify as "iOS, plain
- // arm64"
-#if CONFIG_MAGAZINE_PER_CLUSTER && \
- (MALLOC_TARGET_IOS_ONLY || MALLOC_TARGET_DK_IOS) && \
- defined(__arm64__) && !defined(__arm64e__)
+ // The "single-cluster" concept doesn't apply to macOS: there is no
+ // non-Intel real hardware without multiple AMP clusters, so this will only
+ // happen under virtualization, and for that case we'd prefer the
+ // straight-to-pcpu behaviour rather than falling back to the old allocator.
+#if CONFIG_MAGAZINE_PER_CLUSTER && !(TARGET_OS_OSX || MALLOC_TARGET_DK_OSX)
if (ncpuclusters == 1) {
#if CONFIG_FEATUREFLAGS_SIMPLE
// Not with the other feature flag checks because ncpuclusters needs to
@@ -1381,7 +1381,7 @@
malloc_xzone_enabled = false;
}
}
-#endif
+#endif // CONFIG_MAGAZINE_PER_CLUSTER && !(TARGET_OS_OSX || MALLOC_TARGET_DK_OSX)
_malloc_detect_interposition();
@@ -2912,12 +2912,7 @@
void *ptr = realloc(in_ptr, new_size);
if (!ptr && in_ptr && new_size != 0) {
- // Save and restore `errno`, because `realloc` will set it to ENOMEM
- // on allocation failure, but it could be overwritten if `free` calls
- // into a library function that also modifies `errno`
- errno_t error = errno;
free(in_ptr);
- errno = error;
}
return ptr;