Loading...
libkern/c++/OSObject.cpp xnu-8019.41.5 xnu-8792.61.2
--- xnu/xnu-8019.41.5/libkern/c++/OSObject.cpp
+++ xnu/xnu-8792.61.2/libkern/c++/OSObject.cpp
@@ -280,6 +280,17 @@
 	return ok;
 }
 
+/*
+ * Ignore -Wxnu-typed-allocators for the operator new/delete implementations
+ */
+__typed_allocators_ignore_push
+
+/*
+ * Given that all OSObjects have been transitioned to use
+ * OSObject_typed_operator_new/OSObject_typed_operator_delete, this should
+ * only be called from kexts that havent recompiled to use the new
+ * definitions.
+ */
 void *
 OSObject::operator new(size_t size)
 {
@@ -289,8 +300,8 @@
 	}
 #endif
 
-	void *mem = kheap_alloc_tag_bt(KHEAP_DEFAULT, size,
-	    (zalloc_flags_t) (Z_WAITOK | Z_ZERO), VM_KERN_MEMORY_LIBKERN);
+	void *mem = kheap_alloc(KHEAP_DEFAULT, size,
+	    Z_VM_TAG_BT(Z_WAITOK_ZERO, VM_KERN_MEMORY_LIBKERN));
 	assert(mem);
 	OSIVAR_ACCUMSIZE(size);
 
@@ -321,11 +332,10 @@
 		 * kalloc_type_views generated at some external callsites
 		 * many not have been processed during boot.
 		 */
-		mem = kalloc_type_impl_external(ktv, (zalloc_flags_t)
-		    (Z_WAITOK | Z_ZERO));
+		mem = kalloc_type_impl_external(ktv, Z_WAITOK_ZERO);
 	} else {
-		mem = kheap_alloc_tag_bt(KHEAP_DEFAULT, size,
-		    (zalloc_flags_t) (Z_WAITOK | Z_ZERO), VM_KERN_MEMORY_LIBKERN);
+		mem = kheap_alloc(KHEAP_DEFAULT, size,
+		    Z_VM_TAG_BT(Z_WAITOK_ZERO, VM_KERN_MEMORY_LIBKERN));
 	}
 	assert(mem);
 	OSIVAR_ACCUMSIZE(size);
@@ -346,7 +356,7 @@
 	}
 #endif
 
-	kern_os_kfree(mem, size);
+	kheap_free(KHEAP_DEFAULT, mem, size);
 	OSIVAR_ACCUMSIZE(-size);
 }
 
@@ -367,48 +377,12 @@
 	if (size <= kalloc_type_get_size(ktv->kt_size)) {
 		kern_os_typed_free(ktv, mem, size);
 	} else {
-		kern_os_kfree(mem, size);
+		kheap_free(KHEAP_DEFAULT, mem, size);
 	}
 	OSIVAR_ACCUMSIZE(-size);
 }
 
-extern "C" void *
-OSObject_operator_new_external(size_t size);
-void *
-OSObject_operator_new_external(size_t size)
-{
-  #if IOTRACKING
-	if (kIOTracking & gIOKitDebug) {
-		return OSMetaClass::trackedNew(size);
-	}
-#endif
-
-	void * mem = kheap_alloc_tag_bt(KHEAP_KEXT, size,
-	    (zalloc_flags_t) (Z_WAITOK | Z_ZERO), VM_KERN_MEMORY_LIBKERN);
-	assert(mem);
-	OSIVAR_ACCUMSIZE(size);
-
-	return (void *) mem;
-}
-
-extern "C" void
-OSObject_operator_delete_external(void * mem, size_t size);
-void
-OSObject_operator_delete_external(void * mem, size_t size)
-{
-	if (!mem) {
-		return;
-	}
-
-#if IOTRACKING
-	if (kIOTracking & gIOKitDebug) {
-		return OSMetaClass::trackedDelete(mem, size);
-	}
-#endif
-
-	kheap_free(KHEAP_KEXT, mem, size);
-	OSIVAR_ACCUMSIZE(-size);
-}
+__typed_allocators_ignore_pop
 
 bool
 OSObject::init()