diff options
| author | kennytm <kennytm@gmail.com> | 2018-08-21 22:05:30 +0800 |
|---|---|---|
| committer | kennytm <kennytm@gmail.com> | 2018-08-21 22:05:30 +0800 |
| commit | 0dd88c97975b2a2e4ea3e4a2bdc3670a9f40bd67 (patch) | |
| tree | 0ad62b121fcafe2d11ee95819caf64e975d4ad00 /src/libcore/slice | |
| parent | 9bbab65ebefbeb512445a759603b03f858e5e9b9 (diff) | |
| parent | 993fb934640b7e514f3c629c33a2698a83ed8c3e (diff) | |
| download | rust-0dd88c97975b2a2e4ea3e4a2bdc3670a9f40bd67.tar.gz rust-0dd88c97975b2a2e4ea3e4a2bdc3670a9f40bd67.zip | |
Rollup merge of #53329 - frewsxcv:frewsxcv-ptr-add-sub, r=RalfJung
Replace usages of ptr::offset with ptr::{add,sub}.
Rust provides these helper methods – so let's use them!
Diffstat (limited to 'src/libcore/slice')
| -rw-r--r-- | src/libcore/slice/memchr.rs | 4 | ||||
| -rw-r--r-- | src/libcore/slice/mod.rs | 46 | ||||
| -rw-r--r-- | src/libcore/slice/rotate.rs | 14 | ||||
| -rw-r--r-- | src/libcore/slice/sort.rs | 6 |
4 files changed, 35 insertions, 35 deletions
diff --git a/src/libcore/slice/memchr.rs b/src/libcore/slice/memchr.rs index c9d3c7fea98..cf95333af9c 100644 --- a/src/libcore/slice/memchr.rs +++ b/src/libcore/slice/memchr.rs @@ -72,8 +72,8 @@ pub fn memchr(x: u8, text: &[u8]) -> Option<usize> { if len >= 2 * usize_bytes { while offset <= len - 2 * usize_bytes { unsafe { - let u = *(ptr.offset(offset as isize) as *const usize); - let v = *(ptr.offset((offset + usize_bytes) as isize) as *const usize); + let u = *(ptr.add(offset) as *const usize); + let v = *(ptr.add(offset + usize_bytes) as *const usize); // break if there is a matching byte let zu = contains_zero_byte(u ^ repeated_x); diff --git a/src/libcore/slice/mod.rs b/src/libcore/slice/mod.rs index 05d98d3a599..3366c4a3e66 100644 --- a/src/libcore/slice/mod.rs +++ b/src/libcore/slice/mod.rs @@ -383,7 +383,7 @@ impl<T> [T] { /// /// unsafe { /// for i in 0..x.len() { - /// assert_eq!(x.get_unchecked(i), &*x_ptr.offset(i as isize)); + /// assert_eq!(x.get_unchecked(i), &*x_ptr.add(i)); /// } /// } /// ``` @@ -410,7 +410,7 @@ impl<T> [T] { /// /// unsafe { /// for i in 0..x.len() { - /// *x_ptr.offset(i as isize) += 2; + /// *x_ptr.add(i) += 2; /// } /// } /// assert_eq!(x, &[3, 4, 6]); @@ -546,9 +546,9 @@ impl<T> [T] { assume(!ptr.is_null()); let end = if mem::size_of::<T>() == 0 { - (ptr as *const u8).wrapping_offset(self.len() as isize) as *const T + (ptr as *const u8).wrapping_add(self.len()) as *const T } else { - ptr.offset(self.len() as isize) + ptr.add(self.len()) }; Iter { @@ -578,9 +578,9 @@ impl<T> [T] { assume(!ptr.is_null()); let end = if mem::size_of::<T>() == 0 { - (ptr as *mut u8).wrapping_offset(self.len() as isize) as *mut T + (ptr as *mut u8).wrapping_add(self.len()) as *mut T } else { - ptr.offset(self.len() as isize) + ptr.add(self.len()) }; IterMut { @@ -842,7 +842,7 @@ impl<T> [T] { assert!(mid <= len); (from_raw_parts_mut(ptr, mid), - from_raw_parts_mut(ptr.offset(mid as isize), len - mid)) + from_raw_parts_mut(ptr.add(mid), len - mid)) } } @@ -1444,7 +1444,7 @@ impl<T> [T] { unsafe { let p = self.as_mut_ptr(); - rotate::ptr_rotate(mid, p.offset(mid as isize), k); + rotate::ptr_rotate(mid, p.add(mid), k); } } @@ -1485,7 +1485,7 @@ impl<T> [T] { unsafe { let p = self.as_mut_ptr(); - rotate::ptr_rotate(mid, p.offset(mid as isize), k); + rotate::ptr_rotate(mid, p.add(mid), k); } } @@ -1789,7 +1789,7 @@ impl<T> [T] { let (us_len, ts_len) = rest.align_to_offsets::<U>(); (left, from_raw_parts(rest.as_ptr() as *const U, us_len), - from_raw_parts(rest.as_ptr().offset((rest.len() - ts_len) as isize), ts_len)) + from_raw_parts(rest.as_ptr().add(rest.len() - ts_len), ts_len)) } } @@ -1843,7 +1843,7 @@ impl<T> [T] { let mut_ptr = rest.as_mut_ptr(); (left, from_raw_parts_mut(mut_ptr as *mut U, us_len), - from_raw_parts_mut(mut_ptr.offset((rest.len() - ts_len) as isize), ts_len)) + from_raw_parts_mut(mut_ptr.add(rest.len() - ts_len), ts_len)) } } } @@ -2037,12 +2037,12 @@ impl<T> SliceIndex<[T]> for usize { #[inline] unsafe fn get_unchecked(self, slice: &[T]) -> &T { - &*slice.as_ptr().offset(self as isize) + &*slice.as_ptr().add(self) } #[inline] unsafe fn get_unchecked_mut(self, slice: &mut [T]) -> &mut T { - &mut *slice.as_mut_ptr().offset(self as isize) + &mut *slice.as_mut_ptr().add(self) } #[inline] @@ -2086,12 +2086,12 @@ impl<T> SliceIndex<[T]> for ops::Range<usize> { #[inline] unsafe fn get_unchecked(self, slice: &[T]) -> &[T] { - from_raw_parts(slice.as_ptr().offset(self.start as isize), self.end - self.start) + from_raw_parts(slice.as_ptr().add(self.start), self.end - self.start) } #[inline] unsafe fn get_unchecked_mut(self, slice: &mut [T]) -> &mut [T] { - from_raw_parts_mut(slice.as_mut_ptr().offset(self.start as isize), self.end - self.start) + from_raw_parts_mut(slice.as_mut_ptr().add(self.start), self.end - self.start) } #[inline] @@ -2467,7 +2467,7 @@ macro_rules! iterator { } // We are in bounds. `offset` does the right thing even for ZSTs. unsafe { - let elem = Some(& $( $mut_ )* *self.ptr.offset(n as isize)); + let elem = Some(& $( $mut_ )* *self.ptr.add(n)); self.post_inc_start((n as isize).wrapping_add(1)); elem } @@ -3347,7 +3347,7 @@ impl<'a, T> FusedIterator for Windows<'a, T> {} #[doc(hidden)] unsafe impl<'a, T> TrustedRandomAccess for Windows<'a, T> { unsafe fn get_unchecked(&mut self, i: usize) -> &'a [T] { - from_raw_parts(self.v.as_ptr().offset(i as isize), self.size) + from_raw_parts(self.v.as_ptr().add(i), self.size) } fn may_have_side_effect() -> bool { false } } @@ -3474,7 +3474,7 @@ unsafe impl<'a, T> TrustedRandomAccess for Chunks<'a, T> { None => self.v.len(), Some(end) => cmp::min(end, self.v.len()), }; - from_raw_parts(self.v.as_ptr().offset(start as isize), end - start) + from_raw_parts(self.v.as_ptr().add(start), end - start) } fn may_have_side_effect() -> bool { false } } @@ -3593,7 +3593,7 @@ unsafe impl<'a, T> TrustedRandomAccess for ChunksMut<'a, T> { None => self.v.len(), Some(end) => cmp::min(end, self.v.len()), }; - from_raw_parts_mut(self.v.as_mut_ptr().offset(start as isize), end - start) + from_raw_parts_mut(self.v.as_mut_ptr().add(start), end - start) } fn may_have_side_effect() -> bool { false } } @@ -3716,7 +3716,7 @@ impl<'a, T> FusedIterator for ExactChunks<'a, T> {} unsafe impl<'a, T> TrustedRandomAccess for ExactChunks<'a, T> { unsafe fn get_unchecked(&mut self, i: usize) -> &'a [T] { let start = i * self.chunk_size; - from_raw_parts(self.v.as_ptr().offset(start as isize), self.chunk_size) + from_raw_parts(self.v.as_ptr().add(start), self.chunk_size) } fn may_have_side_effect() -> bool { false } } @@ -3831,7 +3831,7 @@ impl<'a, T> FusedIterator for ExactChunksMut<'a, T> {} unsafe impl<'a, T> TrustedRandomAccess for ExactChunksMut<'a, T> { unsafe fn get_unchecked(&mut self, i: usize) -> &'a mut [T] { let start = i * self.chunk_size; - from_raw_parts_mut(self.v.as_mut_ptr().offset(start as isize), self.chunk_size) + from_raw_parts_mut(self.v.as_mut_ptr().add(start), self.chunk_size) } fn may_have_side_effect() -> bool { false } } @@ -4116,7 +4116,7 @@ impl_marker_for!(BytewiseEquality, #[doc(hidden)] unsafe impl<'a, T> TrustedRandomAccess for Iter<'a, T> { unsafe fn get_unchecked(&mut self, i: usize) -> &'a T { - &*self.ptr.offset(i as isize) + &*self.ptr.add(i) } fn may_have_side_effect() -> bool { false } } @@ -4124,7 +4124,7 @@ unsafe impl<'a, T> TrustedRandomAccess for Iter<'a, T> { #[doc(hidden)] unsafe impl<'a, T> TrustedRandomAccess for IterMut<'a, T> { unsafe fn get_unchecked(&mut self, i: usize) -> &'a mut T { - &mut *self.ptr.offset(i as isize) + &mut *self.ptr.add(i) } fn may_have_side_effect() -> bool { false } } diff --git a/src/libcore/slice/rotate.rs b/src/libcore/slice/rotate.rs index 28ef53ccb5c..0d182b84974 100644 --- a/src/libcore/slice/rotate.rs +++ b/src/libcore/slice/rotate.rs @@ -77,8 +77,8 @@ pub unsafe fn ptr_rotate<T>(mut left: usize, mid: *mut T, mut right: usize) { } ptr::swap_nonoverlapping( - mid.offset(-(left as isize)), - mid.offset((right-delta) as isize), + mid.sub(left), + mid.add(right - delta), delta); if left <= right { @@ -91,15 +91,15 @@ pub unsafe fn ptr_rotate<T>(mut left: usize, mid: *mut T, mut right: usize) { let rawarray = RawArray::new(); let buf = rawarray.ptr(); - let dim = mid.offset(-(left as isize)).offset(right as isize); + let dim = mid.sub(left).add(right); if left <= right { - ptr::copy_nonoverlapping(mid.offset(-(left as isize)), buf, left); - ptr::copy(mid, mid.offset(-(left as isize)), right); + ptr::copy_nonoverlapping(mid.sub(left), buf, left); + ptr::copy(mid, mid.sub(left), right); ptr::copy_nonoverlapping(buf, dim, left); } else { ptr::copy_nonoverlapping(mid, buf, right); - ptr::copy(mid.offset(-(left as isize)), dim, left); - ptr::copy_nonoverlapping(buf, mid.offset(-(left as isize)), right); + ptr::copy(mid.sub(left), dim, left); + ptr::copy_nonoverlapping(buf, mid.sub(left), right); } } diff --git a/src/libcore/slice/sort.rs b/src/libcore/slice/sort.rs index 518d56095d6..e4c1fd03f9e 100644 --- a/src/libcore/slice/sort.rs +++ b/src/libcore/slice/sort.rs @@ -221,15 +221,15 @@ fn partition_in_blocks<T, F>(v: &mut [T], pivot: &T, is_less: &mut F) -> usize // 3. `end` - End pointer into the `offsets` array. // 4. `offsets - Indices of out-of-order elements within the block. - // The current block on the left side (from `l` to `l.offset(block_l)`). + // The current block on the left side (from `l` to `l.add(block_l)`). let mut l = v.as_mut_ptr(); let mut block_l = BLOCK; let mut start_l = ptr::null_mut(); let mut end_l = ptr::null_mut(); let mut offsets_l: [u8; BLOCK] = unsafe { mem::uninitialized() }; - // The current block on the right side (from `r.offset(-block_r)` to `r`). - let mut r = unsafe { l.offset(v.len() as isize) }; + // The current block on the right side (from `r.sub(block_r)` to `r`). + let mut r = unsafe { l.add(v.len()) }; let mut block_r = BLOCK; let mut start_r = ptr::null_mut(); let mut end_r = ptr::null_mut(); |
