diff options
| author | bors <bors@rust-lang.org> | 2013-07-18 08:37:39 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-07-18 08:37:39 -0700 |
| commit | 559d2ef925fdf82e34022358e0cc182aaeea8b21 (patch) | |
| tree | a1ed7e7859ca0acfe2e091b328a93636f29bfdca /src/libstd | |
| parent | babf7411777a1f0318aafa24f548f2be4a64a521 (diff) | |
| parent | ce166446777c6771c136c2e896b25b750cb9685b (diff) | |
| download | rust-559d2ef925fdf82e34022358e0cc182aaeea8b21.tar.gz rust-559d2ef925fdf82e34022358e0cc182aaeea8b21.zip | |
auto merge of #7842 : thestinger/rust/closure, r=huonw
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/ptr.rs | 34 | ||||
| -rw-r--r-- | src/libstd/reflect.rs | 1 | ||||
| -rw-r--r-- | src/libstd/repr.rs | 25 | ||||
| -rw-r--r-- | src/libstd/unstable/intrinsics.rs | 1 |
4 files changed, 24 insertions, 37 deletions
diff --git a/src/libstd/ptr.rs b/src/libstd/ptr.rs index caf15120bd7..bccdc30a073 100644 --- a/src/libstd/ptr.rs +++ b/src/libstd/ptr.rs @@ -87,8 +87,7 @@ pub fn is_not_null<T>(ptr: *const T) -> bool { !is_null(ptr) } #[inline] #[cfg(target_word_size = "32")] pub unsafe fn copy_memory<T>(dst: *mut T, src: *const T, count: uint) { - use unstable::intrinsics::memmove32; - memmove32(dst, src as *T, count as u32); + intrinsics::memmove32(dst, src as *T, count as u32); } /** @@ -100,8 +99,7 @@ pub unsafe fn copy_memory<T>(dst: *mut T, src: *const T, count: uint) { #[inline] #[cfg(target_word_size = "64")] pub unsafe fn copy_memory<T>(dst: *mut T, src: *const T, count: uint) { - use unstable::intrinsics::memmove64; - memmove64(dst, src as *T, count as u64); + intrinsics::memmove64(dst, src as *T, count as u64); } /** @@ -113,8 +111,7 @@ pub unsafe fn copy_memory<T>(dst: *mut T, src: *const T, count: uint) { #[inline] #[cfg(target_word_size = "32")] pub unsafe fn copy_nonoverlapping_memory<T>(dst: *mut T, src: *const T, count: uint) { - use unstable::intrinsics::memcpy32; - memcpy32(dst, src as *T, count as u32); + intrinsics::memcpy32(dst, src as *T, count as u32); } /** @@ -126,8 +123,7 @@ pub unsafe fn copy_nonoverlapping_memory<T>(dst: *mut T, src: *const T, count: u #[inline] #[cfg(target_word_size = "64")] pub unsafe fn copy_nonoverlapping_memory<T>(dst: *mut T, src: *const T, count: uint) { - use unstable::intrinsics::memcpy64; - memcpy64(dst, src as *T, count as u64); + intrinsics::memcpy64(dst, src as *T, count as u64); } /** @@ -137,8 +133,7 @@ pub unsafe fn copy_nonoverlapping_memory<T>(dst: *mut T, src: *const T, count: u #[inline] #[cfg(target_word_size = "32")] pub unsafe fn set_memory<T>(dst: *mut T, c: u8, count: uint) { - use unstable::intrinsics::memset32; - memset32(dst, c, count as u32); + intrinsics::memset32(dst, c, count as u32); } /** @@ -148,35 +143,18 @@ pub unsafe fn set_memory<T>(dst: *mut T, c: u8, count: uint) { #[inline] #[cfg(target_word_size = "64")] pub unsafe fn set_memory<T>(dst: *mut T, c: u8, count: uint) { - use unstable::intrinsics::memset64; - memset64(dst, c, count as u64); + intrinsics::memset64(dst, c, count as u64); } /** * Zeroes out `count * size_of::<T>` bytes of memory at `dst` */ #[inline] -#[cfg(not(stage0))] pub unsafe fn zero_memory<T>(dst: *mut T, count: uint) { set_memory(dst, 0, count); } /** - * Zeroes out `count * size_of::<T>` bytes of memory at `dst` - */ -#[inline] -#[cfg(stage0)] -pub unsafe fn zero_memory<T>(dst: *mut T, count: uint) { - let mut count = count * sys::size_of::<T>(); - let mut dst = dst as *mut u8; - while count > 0 { - *dst = 0; - dst = mut_offset(dst, 1); - count -= 1; - } -} - -/** * Swap the values at two mutable locations of the same type, without * deinitialising or copying either one. */ diff --git a/src/libstd/reflect.rs b/src/libstd/reflect.rs index fd16f4e5c69..63d2492bd33 100644 --- a/src/libstd/reflect.rs +++ b/src/libstd/reflect.rs @@ -197,6 +197,7 @@ impl<V:TyVisitor + MovePtr> TyVisitor for MovePtrAdaptor<V> { true } + #[cfg(stage0)] fn visit_str(&self) -> bool { self.align_to::<~str>(); if ! self.inner.visit_str() { return false; } diff --git a/src/libstd/repr.rs b/src/libstd/repr.rs index 7707e83a9ce..0aeff2b0b77 100644 --- a/src/libstd/repr.rs +++ b/src/libstd/repr.rs @@ -200,7 +200,7 @@ impl ReprVisitor { } pub fn write_vec_range(&self, - mtbl: uint, + _mtbl: uint, ptr: *u8, len: uint, inner: *TyDesc) @@ -218,7 +218,6 @@ impl ReprVisitor { } else { self.writer.write_str(", "); } - self.write_mut_qualifier(mtbl); self.visit_ptr_inner(p as *c_void, inner); p = align(ptr::offset(p, sz) as uint, al) as *u8; left -= dec; @@ -269,6 +268,7 @@ impl TyVisitor for ReprVisitor { } // Type no longer exists, vestigial function. + #[cfg(stage0)] fn visit_str(&self) -> bool { fail!(); } fn visit_estr_box(&self) -> bool { @@ -302,18 +302,16 @@ impl TyVisitor for ReprVisitor { } } - fn visit_uniq(&self, mtbl: uint, inner: *TyDesc) -> bool { + fn visit_uniq(&self, _mtbl: uint, inner: *TyDesc) -> bool { self.writer.write_char('~'); - self.write_mut_qualifier(mtbl); do self.get::<*c_void> |b| { self.visit_ptr_inner(*b, inner); } } #[cfg(not(stage0))] - fn visit_uniq_managed(&self, mtbl: uint, inner: *TyDesc) -> bool { + fn visit_uniq_managed(&self, _mtbl: uint, inner: *TyDesc) -> bool { self.writer.write_char('~'); - self.write_mut_qualifier(mtbl); do self.get::<&managed::raw::BoxRepr> |b| { let p = ptr::to_unsafe_ptr(&b.data) as *c_void; self.visit_ptr_inner(p, inner); @@ -348,10 +346,20 @@ impl TyVisitor for ReprVisitor { fn visit_evec_box(&self, mtbl: uint, inner: *TyDesc) -> bool { do self.get::<&VecRepr> |b| { self.writer.write_char('@'); + self.write_mut_qualifier(mtbl); + self.write_unboxed_vec_repr(mtbl, &b.unboxed, inner); + } + } + + #[cfg(stage0)] + fn visit_evec_uniq(&self, mtbl: uint, inner: *TyDesc) -> bool { + do self.get::<&VecRepr> |b| { + self.writer.write_char('~'); self.write_unboxed_vec_repr(mtbl, &b.unboxed, inner); } } + #[cfg(not(stage0))] fn visit_evec_uniq(&self, mtbl: uint, inner: *TyDesc) -> bool { do self.get::<&UnboxedVecRepr> |b| { self.writer.write_char('~'); @@ -613,13 +621,14 @@ fn test_repr() { exact_test(&(@"hello"), "@\"hello\""); exact_test(&(~"he\u10f3llo"), "~\"he\\u10f3llo\""); - // FIXME #4210: the mut fields are a bit off here. exact_test(&(@10), "@10"); - exact_test(&(@mut 10), "@10"); + exact_test(&(@mut 10), "@10"); // FIXME: #4210: incorrect + exact_test(&((@mut 10, 2)), "(@mut 10, 2)"); exact_test(&(~10), "~10"); exact_test(&(&10), "&10"); let mut x = 10; exact_test(&(&mut x), "&mut 10"); + exact_test(&(@mut [1, 2]), "@mut [1, 2]"); exact_test(&(1,), "(1,)"); exact_test(&(@[1,2,3,4,5,6,7,8]), diff --git a/src/libstd/unstable/intrinsics.rs b/src/libstd/unstable/intrinsics.rs index 015ecd67c83..796f691dd56 100644 --- a/src/libstd/unstable/intrinsics.rs +++ b/src/libstd/unstable/intrinsics.rs @@ -82,7 +82,6 @@ pub trait TyVisitor { fn visit_f64(&self) -> bool; fn visit_char(&self) -> bool; - fn visit_str(&self) -> bool; fn visit_estr_box(&self) -> bool; fn visit_estr_uniq(&self) -> bool; |
