Loading...
src/magazine_medium.c libmalloc-474.0.13 libmalloc-409.40.6
--- libmalloc/libmalloc-474.0.13/src/magazine_medium.c
+++ libmalloc/libmalloc-409.40.6/src/magazine_medium.c
@@ -130,6 +130,25 @@
 medium_meta_header_set_middle(msize_t *meta_headers, msize_t index)
 {
 	meta_headers[index] = 0;
+}
+
+static MALLOC_INLINE MALLOC_ALWAYS_INLINE
+mag_index_t
+medium_mag_get_thread_index(void)
+{
+#if CONFIG_MEDIUM_USES_HYPER_SHIFT
+	if (os_likely(_os_cpu_number_override == -1)) {
+		return _malloc_cpu_number() >> hyper_shift;
+	} else {
+		return _os_cpu_number_override >> hyper_shift;
+	}
+#else // CONFIG_MEDIUM_USES_HYPER_SHIFT
+	if (os_likely(_os_cpu_number_override == -1)) {
+		return _malloc_cpu_number();
+	} else {
+		return _os_cpu_number_override;
+	}
+#endif // CONFIG_MEDIUM_USES_HYPER_SHIFT
 }
 
 #pragma mark in-place free list
@@ -2384,7 +2403,7 @@
 medium_malloc_should_clear(rack_t *rack, msize_t msize, boolean_t cleared_requested)
 {
 	void *ptr;
-	mag_index_t mag_index = rack_get_thread_index(rack) % rack->num_magazines;
+	mag_index_t mag_index = medium_mag_get_thread_index() % rack->num_magazines;
 	magazine_t *medium_mag_ptr = &(rack->magazines[mag_index]);
 
 	MALLOC_TRACE(TRACE_medium_malloc, (uintptr_t)rack, MEDIUM_BYTES_FOR_MSIZE(msize), (uintptr_t)medium_mag_ptr, cleared_requested);