Auto merge of #22669 - dotdash:fast_slice_iter, r=huonw

This adds the assume() calls back that got lost when rebasing #21886.
This commit is contained in:
bors 2015-02-28 03:37:20 +00:00
commit 1c93934fcf
2 changed files with 7 additions and 1 deletions

View file

@ -433,8 +433,10 @@ pub fn truncate(&mut self, len: usize) {
#[stable(feature = "rust1", since = "1.0.0")]
pub fn as_mut_slice(&mut self) -> &mut [T] {
unsafe {
let ptr = *self.ptr;
assume(!ptr.is_null());
mem::transmute(RawSlice {
data: *self.ptr,
data: ptr,
len: self.len,
})
}
@ -458,6 +460,7 @@ pub fn as_mut_slice(&mut self) -> &mut [T] {
pub fn into_iter(self) -> IntoIter<T> {
unsafe {
let ptr = *self.ptr;
assume(!ptr.is_null());
let cap = self.cap;
let begin = ptr as *const T;
let end = if mem::size_of::<T>() == 0 {

View file

@ -40,6 +40,7 @@
use cmp::Ordering::{Less, Equal, Greater};
use cmp;
use default::Default;
use intrinsics::assume;
use iter::*;
use ops::{FnMut, self, Index};
use ops::RangeFull;
@ -137,6 +138,7 @@ fn split_at(&self, mid: usize) -> (&[T], &[T]) {
fn iter<'a>(&'a self) -> Iter<'a, T> {
unsafe {
let p = self.as_ptr();
assume(!p.is_null());
if mem::size_of::<T>() == 0 {
Iter {ptr: p,
end: (p as usize + self.len()) as *const T,
@ -276,6 +278,7 @@ fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T]) {
fn iter_mut<'a>(&'a mut self) -> IterMut<'a, T> {
unsafe {
let p = self.as_mut_ptr();
assume(!p.is_null());
if mem::size_of::<T>() == 0 {
IterMut {ptr: p,
end: (p as usize + self.len()) as *mut T,