From ecbb896b9eb2acadefde57be493e4298c1aa04a3 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sun, 14 May 2017 21:29:18 -0400 Subject: Add `Read::initializer`. This is an API that allows types to indicate that they can be passed buffers of uninitialized memory which can improve performance. --- src/libstd/sys/redox/fd.rs | 5 ----- src/libstd/sys/redox/fs.rs | 4 ---- src/libstd/sys/redox/net/tcp.rs | 4 ---- src/libstd/sys/redox/pipe.rs | 4 ---- src/libstd/sys/redox/stdio.rs | 7 ------- src/libstd/sys/unix/ext/net.rs | 12 +++++++----- src/libstd/sys/unix/fd.rs | 5 ----- src/libstd/sys/unix/fs.rs | 4 ---- src/libstd/sys/unix/net.rs | 4 ---- src/libstd/sys/unix/pipe.rs | 4 ---- src/libstd/sys/unix/stdio.rs | 7 ------- src/libstd/sys/windows/fs.rs | 4 ---- src/libstd/sys/windows/handle.rs | 5 ----- src/libstd/sys/windows/net.rs | 10 ---------- src/libstd/sys/windows/pipe.rs | 4 ---- src/libstd/sys/windows/stdio.rs | 5 ----- 16 files changed, 7 insertions(+), 81 deletions(-) (limited to 'src/libstd/sys') diff --git a/src/libstd/sys/redox/fd.rs b/src/libstd/sys/redox/fd.rs index b6de68a9dc1..1b37aafef56 100644 --- a/src/libstd/sys/redox/fd.rs +++ b/src/libstd/sys/redox/fd.rs @@ -14,7 +14,6 @@ use io::{self, Read}; use mem; use sys::{cvt, syscall}; use sys_common::AsInner; -use sys_common::io::read_to_end_uninitialized; pub struct FileDesc { fd: usize, @@ -78,10 +77,6 @@ impl<'a> Read for &'a FileDesc { fn read(&mut self, buf: &mut [u8]) -> io::Result { (**self).read(buf) } - - fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { - unsafe { read_to_end_uninitialized(self, buf) } - } } impl AsInner for FileDesc { diff --git a/src/libstd/sys/redox/fs.rs b/src/libstd/sys/redox/fs.rs index a8391d2b898..48d9cdcb2c9 100644 --- a/src/libstd/sys/redox/fs.rs +++ b/src/libstd/sys/redox/fs.rs @@ -285,10 +285,6 @@ impl File { self.0.read(buf) } - pub fn read_to_end(&self, buf: &mut Vec) -> io::Result { - self.0.read_to_end(buf) - } - pub fn write(&self, buf: &[u8]) -> io::Result { self.0.write(buf) } diff --git a/src/libstd/sys/redox/net/tcp.rs b/src/libstd/sys/redox/net/tcp.rs index 936097d7fb2..ac3fd2ad6b9 100644 --- a/src/libstd/sys/redox/net/tcp.rs +++ b/src/libstd/sys/redox/net/tcp.rs @@ -41,10 +41,6 @@ impl TcpStream { self.0.read(buf) } - pub fn read_to_end(&self, buf: &mut Vec) -> Result { - self.0.read_to_end(buf) - } - pub fn write(&self, buf: &[u8]) -> Result { self.0.write(buf) } diff --git a/src/libstd/sys/redox/pipe.rs b/src/libstd/sys/redox/pipe.rs index e7240fbe7bf..05863adf108 100644 --- a/src/libstd/sys/redox/pipe.rs +++ b/src/libstd/sys/redox/pipe.rs @@ -34,10 +34,6 @@ impl AnonPipe { self.0.read(buf) } - pub fn read_to_end(&self, buf: &mut Vec) -> io::Result { - self.0.read_to_end(buf) - } - pub fn write(&self, buf: &[u8]) -> io::Result { self.0.write(buf) } diff --git a/src/libstd/sys/redox/stdio.rs b/src/libstd/sys/redox/stdio.rs index 607eef051d6..c839531cc26 100644 --- a/src/libstd/sys/redox/stdio.rs +++ b/src/libstd/sys/redox/stdio.rs @@ -25,13 +25,6 @@ impl Stdin { fd.into_raw(); ret } - - pub fn read_to_end(&self, buf: &mut Vec) -> io::Result { - let fd = FileDesc::new(0); - let ret = fd.read_to_end(buf); - fd.into_raw(); - ret - } } impl Stdout { diff --git a/src/libstd/sys/unix/ext/net.rs b/src/libstd/sys/unix/ext/net.rs index d688f2fa504..94b87a6bff4 100644 --- a/src/libstd/sys/unix/ext/net.rs +++ b/src/libstd/sys/unix/ext/net.rs @@ -17,7 +17,7 @@ use libc; use ascii; use ffi::OsStr; use fmt; -use io; +use io::{self, Initializer}; use mem; use net::Shutdown; use os::unix::ffi::OsStrExt; @@ -516,8 +516,9 @@ impl io::Read for UnixStream { io::Read::read(&mut &*self, buf) } - fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { - io::Read::read_to_end(&mut &*self, buf) + #[inline] + unsafe fn initializer(&self) -> Initializer { + Initializer::nop() } } @@ -527,8 +528,9 @@ impl<'a> io::Read for &'a UnixStream { self.0.read(buf) } - fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { - self.0.read_to_end(buf) + #[inline] + unsafe fn initializer(&self) -> Initializer { + Initializer::nop() } } diff --git a/src/libstd/sys/unix/fd.rs b/src/libstd/sys/unix/fd.rs index 405fac2b9d7..138087f1651 100644 --- a/src/libstd/sys/unix/fd.rs +++ b/src/libstd/sys/unix/fd.rs @@ -17,7 +17,6 @@ use mem; use sync::atomic::{AtomicBool, Ordering}; use sys::cvt; use sys_common::AsInner; -use sys_common::io::read_to_end_uninitialized; #[derive(Debug)] pub struct FileDesc { @@ -232,10 +231,6 @@ impl<'a> Read for &'a FileDesc { fn read(&mut self, buf: &mut [u8]) -> io::Result { (**self).read(buf) } - - fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { - unsafe { read_to_end_uninitialized(self, buf) } - } } impl AsInner for FileDesc { diff --git a/src/libstd/sys/unix/fs.rs b/src/libstd/sys/unix/fs.rs index e893a139094..59dceba8953 100644 --- a/src/libstd/sys/unix/fs.rs +++ b/src/libstd/sys/unix/fs.rs @@ -491,10 +491,6 @@ impl File { self.0.read(buf) } - pub fn read_to_end(&self, buf: &mut Vec) -> io::Result { - self.0.read_to_end(buf) - } - pub fn read_at(&self, buf: &mut [u8], offset: u64) -> io::Result { self.0.read_at(buf, offset) } diff --git a/src/libstd/sys/unix/net.rs b/src/libstd/sys/unix/net.rs index 5efddca110f..8fb361a78e2 100644 --- a/src/libstd/sys/unix/net.rs +++ b/src/libstd/sys/unix/net.rs @@ -198,10 +198,6 @@ impl Socket { self.recv_from_with_flags(buf, MSG_PEEK) } - pub fn read_to_end(&self, buf: &mut Vec) -> io::Result { - self.0.read_to_end(buf) - } - pub fn write(&self, buf: &[u8]) -> io::Result { self.0.write(buf) } diff --git a/src/libstd/sys/unix/pipe.rs b/src/libstd/sys/unix/pipe.rs index ca5ef4bcfc5..ec9b6f17dca 100644 --- a/src/libstd/sys/unix/pipe.rs +++ b/src/libstd/sys/unix/pipe.rs @@ -71,10 +71,6 @@ impl AnonPipe { self.0.read(buf) } - pub fn read_to_end(&self, buf: &mut Vec) -> io::Result { - self.0.read_to_end(buf) - } - pub fn write(&self, buf: &[u8]) -> io::Result { self.0.write(buf) } diff --git a/src/libstd/sys/unix/stdio.rs b/src/libstd/sys/unix/stdio.rs index 6d38b00b39e..7a8fe25d98e 100644 --- a/src/libstd/sys/unix/stdio.rs +++ b/src/libstd/sys/unix/stdio.rs @@ -25,13 +25,6 @@ impl Stdin { fd.into_raw(); ret } - - pub fn read_to_end(&self, buf: &mut Vec) -> io::Result { - let fd = FileDesc::new(libc::STDIN_FILENO); - let ret = fd.read_to_end(buf); - fd.into_raw(); - ret - } } impl Stdout { diff --git a/src/libstd/sys/windows/fs.rs b/src/libstd/sys/windows/fs.rs index 4efc68afdc4..7f3291cf304 100644 --- a/src/libstd/sys/windows/fs.rs +++ b/src/libstd/sys/windows/fs.rs @@ -324,10 +324,6 @@ impl File { self.handle.read_at(buf, offset) } - pub fn read_to_end(&self, buf: &mut Vec) -> io::Result { - self.handle.read_to_end(buf) - } - pub fn write(&self, buf: &[u8]) -> io::Result { self.handle.write(buf) } diff --git a/src/libstd/sys/windows/handle.rs b/src/libstd/sys/windows/handle.rs index fdb9483fe1c..3729d6d6534 100644 --- a/src/libstd/sys/windows/handle.rs +++ b/src/libstd/sys/windows/handle.rs @@ -18,7 +18,6 @@ use ops::Deref; use ptr; use sys::c; use sys::cvt; -use sys_common::io::read_to_end_uninitialized; /// An owned container for `HANDLE` object, closing them on Drop. /// @@ -216,8 +215,4 @@ impl<'a> Read for &'a RawHandle { fn read(&mut self, buf: &mut [u8]) -> io::Result { (**self).read(buf) } - - fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { - unsafe { read_to_end_uninitialized(self, buf) } - } } diff --git a/src/libstd/sys/windows/net.rs b/src/libstd/sys/windows/net.rs index adf6210d82e..f2a2793425d 100644 --- a/src/libstd/sys/windows/net.rs +++ b/src/libstd/sys/windows/net.rs @@ -20,7 +20,6 @@ use sync::Once; use sys::c; use sys; use sys_common::{self, AsInner, FromInner, IntoInner}; -use sys_common::io::read_to_end_uninitialized; use sys_common::net; use time::Duration; @@ -200,11 +199,6 @@ impl Socket { self.recv_from_with_flags(buf, c::MSG_PEEK) } - pub fn read_to_end(&self, buf: &mut Vec) -> io::Result { - let mut me = self; - (&mut me).read_to_end(buf) - } - pub fn set_timeout(&self, dur: Option, kind: c_int) -> io::Result<()> { let timeout = match dur { @@ -283,10 +277,6 @@ impl<'a> Read for &'a Socket { fn read(&mut self, buf: &mut [u8]) -> io::Result { (**self).read(buf) } - - fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { - unsafe { read_to_end_uninitialized(self, buf) } - } } impl Drop for Socket { diff --git a/src/libstd/sys/windows/pipe.rs b/src/libstd/sys/windows/pipe.rs index 8073473f7ff..be7482c4bb1 100644 --- a/src/libstd/sys/windows/pipe.rs +++ b/src/libstd/sys/windows/pipe.rs @@ -164,10 +164,6 @@ impl AnonPipe { self.inner.read(buf) } - pub fn read_to_end(&self, buf: &mut Vec) -> io::Result { - self.inner.read_to_end(buf) - } - pub fn write(&self, buf: &[u8]) -> io::Result { self.inner.write(buf) } diff --git a/src/libstd/sys/windows/stdio.rs b/src/libstd/sys/windows/stdio.rs index d72e4b4438b..b5e5b5760f2 100644 --- a/src/libstd/sys/windows/stdio.rs +++ b/src/libstd/sys/windows/stdio.rs @@ -20,7 +20,6 @@ use sync::Mutex; use sys::c; use sys::cvt; use sys::handle::Handle; -use sys_common::io::read_to_end_uninitialized; pub enum Output { Console(c::HANDLE), @@ -151,10 +150,6 @@ impl<'a> Read for &'a Stdin { fn read(&mut self, buf: &mut [u8]) -> io::Result { (**self).read(buf) } - - fn read_to_end(&mut self, buf: &mut Vec) -> io::Result { - unsafe { read_to_end_uninitialized(self, buf) } - } } impl Stdout { -- cgit 1.4.1-3-g733a5