Loading...
--- xnu/xnu-8019.41.5/libkern/c++/OSArray.cpp
+++ xnu/xnu-8792.61.2/libkern/c++/OSArray.cpp
@@ -64,8 +64,7 @@
return false;
}
- array = kalloc_type_tag_bt(ArrayPtrType, inCapacity, Z_WAITOK_ZERO,
- VM_KERN_MEMORY_LIBKERN);
+ array = kallocp_type_container(ArrayPtrType, &inCapacity, Z_WAITOK_ZERO);
if (!array) {
return false;
}
@@ -73,8 +72,6 @@
count = 0;
capacity = inCapacity;
capacityIncrement = (inCapacity)? inCapacity : 16;
-
- os::uninitialized_value_construct(array, array + capacity);
OSCONTAINER_ACCUMSIZE(sizeof(*array) * inCapacity);
return true;
@@ -208,7 +205,7 @@
OSArray::ensureCapacity(unsigned int newCapacity)
{
ArraySharedPtrType *newArray;
- vm_size_t finalCapacity;
+ unsigned int finalCapacity;
if (newCapacity <= capacity) {
return capacity;
@@ -223,24 +220,12 @@
return capacity;
}
- newArray = kallocp_type_tag_bt(ArrayPtrType, &finalCapacity,
- Z_WAITOK, VM_KERN_MEMORY_LIBKERN);
+ newArray = kreallocp_type_container(ArrayPtrType, array,
+ capacity, &finalCapacity, Z_WAITOK_ZERO);
if (newArray) {
- // use all of the actual allocation size
- if (finalCapacity > UINT_MAX) {
- // failure, too large
- kfree_type(ArrayPtrType, finalCapacity, newArray);
- return capacity;
- }
-
OSCONTAINER_ACCUMSIZE(sizeof(*array) * (finalCapacity - capacity));
-
- os::uninitialized_move(array, array + capacity, newArray);
- os::uninitialized_value_construct(newArray + capacity, newArray + finalCapacity);
- os::destroy(array, array + capacity);
- kfree_type(ArrayPtrType, capacity, array);
array = newArray;
- capacity = (unsigned int) finalCapacity;
+ capacity = finalCapacity;
}
return capacity;