about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2014-05-09 23:56:28 -0400
committerDaniel Micay <danielmicay@gmail.com>2014-05-10 19:58:17 -0400
commit0621ccac626ef4ca15e2cdf0aceed13ad0d3f848 (patch)
tree311b3c6a84d3bc5f582356b1ce9e86e6fa9abee7 /src/libstd
parentf8e92cbbe3337974caca28b801efa26734b3c6f9 (diff)
downloadrust-0621ccac626ef4ca15e2cdf0aceed13ad0d3f848.tar.gz
rust-0621ccac626ef4ca15e2cdf0aceed13ad0d3f848.zip
vec: move some code inside alloc_or_realloc
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/vec.rs12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs
index 11c737672fb..351d4f3eaff 100644
--- a/src/libstd/vec.rs
+++ b/src/libstd/vec.rs
@@ -403,11 +403,11 @@ impl<T> Container for Vec<T> {
 
 // FIXME: #13996: need a way to mark the return value as `noalias`
 #[inline(never)]
-unsafe fn alloc_or_realloc(ptr: *mut u8, size: uint, align: uint, old_size: uint) -> *mut u8 {
+unsafe fn alloc_or_realloc<T>(ptr: *mut T, size: uint, old_size: uint) -> *mut T {
     if old_size == 0 {
-        allocate(size, align)
+        allocate(size, min_align_of::<T>()) as *mut T
     } else {
-        reallocate(ptr, size, align, old_size)
+        reallocate(ptr as *mut u8, size, min_align_of::<T>(), old_size) as *mut T
     }
 }
 
@@ -491,8 +491,7 @@ impl<T> Vec<T> {
         if capacity > self.cap {
             let size = capacity.checked_mul(&size_of::<T>()).expect("capacity overflow");
             unsafe {
-                self.ptr = alloc_or_realloc(self.ptr as *mut u8, size, min_align_of::<T>(),
-                                            self.cap * size_of::<T>()) as *mut T;
+                self.ptr = alloc_or_realloc(self.ptr, size, self.cap * size_of::<T>());
             }
             self.cap = capacity;
         }
@@ -573,8 +572,7 @@ impl<T> Vec<T> {
             let size = max(old_size, 2 * size_of::<T>()) * 2;
             if old_size > size { fail!("capacity overflow") }
             unsafe {
-                self.ptr = alloc_or_realloc(self.ptr as *mut u8, size, min_align_of::<T>(),
-                                            self.cap * size_of::<T>()) as *mut u8 as *mut T;
+                self.ptr = alloc_or_realloc(self.ptr, size, self.cap * size_of::<T>());
             }
             self.cap = max(self.cap, 2) * 2;
         }