Loading...
--- xnu/xnu-7195.141.2/libkern/c++/OSArray.cpp
+++ xnu/xnu-8019.80.24/libkern/c++/OSArray.cpp
@@ -55,8 +55,6 @@
bool
OSArray::initWithCapacity(unsigned int inCapacity)
{
- unsigned int size;
-
if (!super::init()) {
return false;
}
@@ -66,8 +64,8 @@
return false;
}
- size = sizeof(*array) * inCapacity;
- array = (ArraySharedPtrType *)kalloc_container(size);
+ array = kalloc_type_tag_bt(ArrayPtrType, inCapacity, Z_WAITOK_ZERO,
+ VM_KERN_MEMORY_LIBKERN);
if (!array) {
return false;
}
@@ -77,7 +75,7 @@
capacityIncrement = (inCapacity)? inCapacity : 16;
os::uninitialized_value_construct(array, array + capacity);
- OSCONTAINER_ACCUMSIZE(size);
+ OSCONTAINER_ACCUMSIZE(sizeof(*array) * inCapacity);
return true;
}
@@ -175,7 +173,7 @@
if (array) {
os::destroy(array, array + capacity);
- kfree(array, sizeof(*array) * capacity);
+ kfree_type(ArrayPtrType, capacity, array);
OSCONTAINER_ACCUMSIZE( -(sizeof(*array) * capacity));
}
@@ -211,7 +209,6 @@
{
ArraySharedPtrType *newArray;
vm_size_t finalCapacity;
- vm_size_t oldSize, newSize;
if (newCapacity <= capacity) {
return capacity;
@@ -226,26 +223,22 @@
return capacity;
}
- newSize = sizeof(*newArray) * finalCapacity;
-
- newArray = (decltype(newArray))kallocp_container(&newSize);
+ newArray = kallocp_type_tag_bt(ArrayPtrType, &finalCapacity,
+ Z_WAITOK, VM_KERN_MEMORY_LIBKERN);
if (newArray) {
// use all of the actual allocation size
- finalCapacity = (newSize / sizeof(*newArray));
if (finalCapacity > UINT_MAX) {
// failure, too large
- kfree(newArray, newSize);
+ kfree_type(ArrayPtrType, finalCapacity, newArray);
return capacity;
}
- oldSize = sizeof(*array) * capacity;
-
- OSCONTAINER_ACCUMSIZE(((size_t)newSize) - ((size_t)oldSize));
+ 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(array, oldSize);
+ kfree_type(ArrayPtrType, capacity, array);
array = newArray;
capacity = (unsigned int) finalCapacity;
}