diff options
| author | bors <bors@rust-lang.org> | 2013-08-27 19:35:44 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-08-27 19:35:44 -0700 |
| commit | 578e68047736167239c52fa1aba0347011ff1bc3 (patch) | |
| tree | 00dfacbcaf5bcc846757d37cbf7e9309df699cb8 /src/libstd/rt | |
| parent | 32117132bdaf572bd4a156ec931579646e16d6f0 (diff) | |
| parent | aac9d6eee9a1e0b254bf6e035e2e14e5106758bd (diff) | |
| download | rust-578e68047736167239c52fa1aba0347011ff1bc3.tar.gz rust-578e68047736167239c52fa1aba0347011ff1bc3.zip | |
auto merge of #8802 : pcwalton/rust/compile-speed, r=brson
r? @brson
Diffstat (limited to 'src/libstd/rt')
| -rw-r--r-- | src/libstd/rt/borrowck.rs | 39 | ||||
| -rw-r--r-- | src/libstd/rt/comm.rs | 6 | ||||
| -rw-r--r-- | src/libstd/rt/io/file.rs | 4 | ||||
| -rw-r--r-- | src/libstd/rt/io/net/ip.rs | 51 | ||||
| -rw-r--r-- | src/libstd/rt/io/net/tcp.rs | 4 | ||||
| -rw-r--r-- | src/libstd/rt/io/net/udp.rs | 5 | ||||
| -rw-r--r-- | src/libstd/rt/io/timer.rs | 2 | ||||
| -rw-r--r-- | src/libstd/rt/local.rs | 30 | ||||
| -rw-r--r-- | src/libstd/rt/local_heap.rs | 7 | ||||
| -rw-r--r-- | src/libstd/rt/mod.rs | 8 | ||||
| -rw-r--r-- | src/libstd/rt/sched.rs | 25 | ||||
| -rw-r--r-- | src/libstd/rt/select.rs | 1 | ||||
| -rw-r--r-- | src/libstd/rt/task.rs | 12 | ||||
| -rw-r--r-- | src/libstd/rt/tube.rs | 12 | ||||
| -rw-r--r-- | src/libstd/rt/uv/uvio.rs | 116 |
15 files changed, 180 insertions, 142 deletions
diff --git a/src/libstd/rt/borrowck.rs b/src/libstd/rt/borrowck.rs index cbac43f27c7..9dc0abdfbd8 100644 --- a/src/libstd/rt/borrowck.rs +++ b/src/libstd/rt/borrowck.rs @@ -11,17 +11,18 @@ use cell::Cell; use c_str::ToCStr; use cast::transmute; -use libc::{c_char, size_t, STDERR_FILENO}; -use io; use io::{Writer, WriterUtil}; +use io; +use libc::{c_char, size_t, STDERR_FILENO}; use option::{Option, None, Some}; -use uint; +use ptr::RawPtr; use rt::env; use rt::local::Local; use rt::task::Task; -use str; use str::{OwnedStr, StrSlice}; +use str; use sys; +use uint; use unstable::raw; use vec::ImmutableVector; @@ -37,7 +38,7 @@ pub struct BorrowRecord { } fn try_take_task_borrow_list() -> Option<~[BorrowRecord]> { - do Local::borrow::<Task, Option<~[BorrowRecord]>> |task| { + do Local::borrow |task: &mut Task| { task.borrow_list.take() } } @@ -49,7 +50,7 @@ fn swap_task_borrow_list(f: &fn(~[BorrowRecord]) -> ~[BorrowRecord]) { }; let borrows = f(borrows); let borrows = Cell::new(borrows); - do Local::borrow::<Task, ()> |task| { + do Local::borrow |task: &mut Task| { task.borrow_list = Some(borrows.take()); } } @@ -93,12 +94,12 @@ unsafe fn fail_borrowed(box: *mut raw::Box<()>, file: *c_char, line: size_t) { static ENABLE_DEBUG: bool = false; #[inline] -unsafe fn debug_borrow<T>(tag: &'static str, - p: *const T, - old_bits: uint, - new_bits: uint, - filename: *c_char, - line: size_t) { +unsafe fn debug_borrow<T,P:RawPtr<T>>(tag: &'static str, + p: P, + old_bits: uint, + new_bits: uint, + filename: *c_char, + line: size_t) { //! A useful debugging function that prints a pointer + tag + newline //! without allocating memory. @@ -106,15 +107,15 @@ unsafe fn debug_borrow<T>(tag: &'static str, debug_borrow_slow(tag, p, old_bits, new_bits, filename, line); } - unsafe fn debug_borrow_slow<T>(tag: &'static str, - p: *const T, - old_bits: uint, - new_bits: uint, - filename: *c_char, - line: size_t) { + unsafe fn debug_borrow_slow<T,P:RawPtr<T>>(tag: &'static str, + p: P, + old_bits: uint, + new_bits: uint, + filename: *c_char, + line: size_t) { let dbg = STDERR_FILENO as io::fd_t; dbg.write_str(tag); - dbg.write_hex(p as uint); + dbg.write_hex(p.to_uint()); dbg.write_str(" "); dbg.write_hex(old_bits); dbg.write_str(" "); diff --git a/src/libstd/rt/comm.rs b/src/libstd/rt/comm.rs index b547d3c9c30..4b1881409f4 100644 --- a/src/libstd/rt/comm.rs +++ b/src/libstd/rt/comm.rs @@ -159,7 +159,7 @@ impl<T> ChanOne<T> { }; } else { let recvr = Cell::new(recvr); - do Local::borrow::<Scheduler, ()> |sched| { + do Local::borrow |sched: &mut Scheduler| { sched.enqueue_blocked_task(recvr.take()); } } @@ -199,7 +199,7 @@ impl<T> PortOne<T> { if !this.optimistic_check() { // No data available yet. // Switch to the scheduler to put the ~Task into the Packet state. - let sched = Local::take::<Scheduler>(); + let sched: ~Scheduler = Local::take(); do sched.deschedule_running_task_and_then |sched, task| { this.block_on(sched, task); } @@ -221,7 +221,7 @@ impl<T> SelectInner for PortOne<T> { // The optimistic check is never necessary for correctness. For testing // purposes, making it randomly return false simulates a racing sender. use rand::{Rand}; - let actually_check = do Local::borrow::<Scheduler, bool> |sched| { + let actually_check = do Local::borrow |sched: &mut Scheduler| { Rand::rand(&mut sched.rng) }; if actually_check { diff --git a/src/libstd/rt/io/file.rs b/src/libstd/rt/io/file.rs index 65db76d5ef7..f4e9c4d7c11 100644 --- a/src/libstd/rt/io/file.rs +++ b/src/libstd/rt/io/file.rs @@ -24,7 +24,7 @@ pub fn open<P: PathLike>(path: &P, access: FileAccess ) -> Option<FileStream> { let open_result = unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); (*io).fs_open(path, mode, access) }; match open_result { @@ -43,7 +43,7 @@ pub fn open<P: PathLike>(path: &P, /// by `path`. pub fn unlink<P: PathLike>(path: &P) { let unlink_result = unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); (*io).fs_unlink(path) }; match unlink_result { diff --git a/src/libstd/rt/io/net/ip.rs b/src/libstd/rt/io/net/ip.rs index 3b3ea80eafa..d1d6b16e2eb 100644 --- a/src/libstd/rt/io/net/ip.rs +++ b/src/libstd/rt/io/net/ip.rs @@ -359,7 +359,7 @@ impl FromStr for SocketAddr { mod test { use super::*; use from_str::FromStr; - use option::{Some, None}; + use option::{Option, Some, None}; #[test] fn test_from_str_ipv4() { @@ -368,13 +368,17 @@ mod test { assert_eq!(Some(Ipv4Addr(0, 0, 0, 0)), FromStr::from_str("0.0.0.0")); // out of range - assert_eq!(None, FromStr::from_str::<IpAddr>("256.0.0.1")); + let none: Option<IpAddr> = FromStr::from_str("256.0.0.1"); + assert_eq!(None, none); // too short - assert_eq!(None, FromStr::from_str::<IpAddr>("255.0.0")); + let none: Option<IpAddr> = FromStr::from_str("255.0.0"); + assert_eq!(None, none); // too long - assert_eq!(None, FromStr::from_str::<IpAddr>("255.0.0.1.2")); + let none: Option<IpAddr> = FromStr::from_str("255.0.0.1.2"); + assert_eq!(None, none); // no number between dots - assert_eq!(None, FromStr::from_str::<IpAddr>("255.0..1")); + let none: Option<IpAddr> = FromStr::from_str("255.0..1"); + assert_eq!(None, none); } #[test] @@ -389,15 +393,20 @@ mod test { FromStr::from_str("2a02:6b8::11:11")); // too long group - assert_eq!(None, FromStr::from_str::<IpAddr>("::00000")); + let none: Option<IpAddr> = FromStr::from_str("::00000"); + assert_eq!(None, none); // too short - assert_eq!(None, FromStr::from_str::<IpAddr>("1:2:3:4:5:6:7")); + let none: Option<IpAddr> = FromStr::from_str("1:2:3:4:5:6:7"); + assert_eq!(None, none); // too long - assert_eq!(None, FromStr::from_str::<IpAddr>("1:2:3:4:5:6:7:8:9")); + let none: Option<IpAddr> = FromStr::from_str("1:2:3:4:5:6:7:8:9"); + assert_eq!(None, none); // triple colon - assert_eq!(None, FromStr::from_str::<IpAddr>("1:2:::6:7:8")); + let none: Option<IpAddr> = FromStr::from_str("1:2:::6:7:8"); + assert_eq!(None, none); // two double colons - assert_eq!(None, FromStr::from_str::<IpAddr>("1:2::6::8")); + let none: Option<IpAddr> = FromStr::from_str("1:2::6::8"); + assert_eq!(None, none); } #[test] @@ -412,11 +421,15 @@ mod test { FromStr::from_str("2001:db8:122:c000:2:2100:192.0.2.33")); // colon after v4 - assert_eq!(None, FromStr::from_str::<IpAddr>("::127.0.0.1:")); + let none: Option<IpAddr> = FromStr::from_str("::127.0.0.1:"); + assert_eq!(None, none); // not enought groups - assert_eq!(None, FromStr::from_str::<IpAddr>("1.2.3.4.5:127.0.0.1")); + let none: Option<IpAddr> = FromStr::from_str("1.2.3.4.5:127.0.0.1"); + assert_eq!(None, none); // too many groups - assert_eq!(None, FromStr::from_str::<IpAddr>("1.2.3.4.5:6:7:127.0.0.1")); + let none: Option<IpAddr> = + FromStr::from_str("1.2.3.4.5:6:7:127.0.0.1"); + assert_eq!(None, none); } #[test] @@ -429,13 +442,17 @@ mod test { FromStr::from_str("[::127.0.0.1]:22")); // without port - assert_eq!(None, FromStr::from_str::<SocketAddr>("127.0.0.1")); + let none: Option<SocketAddr> = FromStr::from_str("127.0.0.1"); + assert_eq!(None, none); // without port - assert_eq!(None, FromStr::from_str::<SocketAddr>("127.0.0.1:")); + let none: Option<SocketAddr> = FromStr::from_str("127.0.0.1:"); + assert_eq!(None, none); // wrong brackets around v4 - assert_eq!(None, FromStr::from_str::<SocketAddr>("[127.0.0.1]:22")); + let none: Option<SocketAddr> = FromStr::from_str("[127.0.0.1]:22"); + assert_eq!(None, none); // port out of range - assert_eq!(None, FromStr::from_str::<SocketAddr>("127.0.0.1:123456")); + let none: Option<SocketAddr> = FromStr::from_str("127.0.0.1:123456"); + assert_eq!(None, none); } #[test] diff --git a/src/libstd/rt/io/net/tcp.rs b/src/libstd/rt/io/net/tcp.rs index 746fa5668a5..9be5540de48 100644 --- a/src/libstd/rt/io/net/tcp.rs +++ b/src/libstd/rt/io/net/tcp.rs @@ -29,7 +29,7 @@ impl TcpStream { pub fn connect(addr: SocketAddr) -> Option<TcpStream> { let stream = unsafe { rtdebug!("borrowing io to connect"); - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); rtdebug!("about to connect"); (*io).tcp_connect(addr) }; @@ -100,7 +100,7 @@ pub struct TcpListener(~RtioTcpListenerObject); impl TcpListener { pub fn bind(addr: SocketAddr) -> Option<TcpListener> { let listener = unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); (*io).tcp_bind(addr) }; match listener { diff --git a/src/libstd/rt/io/net/udp.rs b/src/libstd/rt/io/net/udp.rs index 644abcbe145..132ca064515 100644 --- a/src/libstd/rt/io/net/udp.rs +++ b/src/libstd/rt/io/net/udp.rs @@ -20,7 +20,10 @@ pub struct UdpSocket(~RtioUdpSocketObject); impl UdpSocket { pub fn bind(addr: SocketAddr) -> Option<UdpSocket> { - let socket = unsafe { (*Local::unsafe_borrow::<IoFactoryObject>()).udp_bind(addr) }; + let socket = unsafe { + let factory: *mut IoFactoryObject = Local::unsafe_borrow(); + (*factory).udp_bind(addr) + }; match socket { Ok(s) => Some(UdpSocket(s)), Err(ioerr) => { diff --git a/src/libstd/rt/io/timer.rs b/src/libstd/rt/io/timer.rs index b0ec747800d..7f2d88f994d 100644 --- a/src/libstd/rt/io/timer.rs +++ b/src/libstd/rt/io/timer.rs @@ -22,7 +22,7 @@ impl Timer { pub fn new() -> Option<Timer> { let timer = unsafe { rtdebug!("Timer::init: borrowing io to init timer"); - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); rtdebug!("about to init timer"); (*io).timer_init() }; diff --git a/src/libstd/rt/local.rs b/src/libstd/rt/local.rs index 18b7394700f..d4f31879c00 100644 --- a/src/libstd/rt/local.rs +++ b/src/libstd/rt/local.rs @@ -19,7 +19,7 @@ use cell::Cell; pub trait Local { fn put(value: ~Self); fn take() -> ~Self; - fn exists() -> bool; + fn exists(unused_value: Option<Self>) -> bool; fn borrow<T>(f: &fn(&mut Self) -> T) -> T; unsafe fn unsafe_take() -> ~Self; unsafe fn unsafe_borrow() -> *mut Self; @@ -31,7 +31,7 @@ impl Local for Task { fn put(value: ~Task) { unsafe { local_ptr::put(value) } } #[inline] fn take() -> ~Task { unsafe { local_ptr::take() } } - fn exists() -> bool { local_ptr::exists() } + fn exists(_: Option<Task>) -> bool { local_ptr::exists() } fn borrow<T>(f: &fn(&mut Task) -> T) -> T { let mut res: Option<T> = None; let res_ptr: *mut Option<T> = &mut res; @@ -59,7 +59,7 @@ impl Local for Task { impl Local for Scheduler { fn put(value: ~Scheduler) { let value = Cell::new(value); - do Local::borrow::<Task,()> |task| { + do Local::borrow |task: &mut Task| { let task = task; task.sched = Some(value.take()); }; @@ -68,12 +68,12 @@ impl Local for Scheduler { fn take() -> ~Scheduler { unsafe { // XXX: Unsafe for speed - let task = Local::unsafe_borrow::<Task>(); + let task: *mut Task = Local::unsafe_borrow(); (*task).sched.take_unwrap() } } - fn exists() -> bool { - do Local::borrow::<Task,bool> |task| { + fn exists(_: Option<Scheduler>) -> bool { + do Local::borrow |task: &mut Task| { match task.sched { Some(ref _task) => true, None => false @@ -81,7 +81,7 @@ impl Local for Scheduler { } } fn borrow<T>(f: &fn(&mut Scheduler) -> T) -> T { - do Local::borrow::<Task, T> |task| { + do Local::borrow |task: &mut Task| { match task.sched { Some(~ref mut task) => { f(task) @@ -94,7 +94,8 @@ impl Local for Scheduler { } unsafe fn unsafe_take() -> ~Scheduler { rtabort!("unimpl") } unsafe fn unsafe_borrow() -> *mut Scheduler { - match (*Local::unsafe_borrow::<Task>()).sched { + let task: *mut Task = Local::unsafe_borrow(); + match (*task).sched { Some(~ref mut sched) => { let s: *mut Scheduler = &mut *sched; return s; @@ -105,7 +106,8 @@ impl Local for Scheduler { } } unsafe fn try_unsafe_borrow() -> Option<*mut Scheduler> { - match Local::try_unsafe_borrow::<Task>() { + let task_opt: Option<*mut Task> = Local::try_unsafe_borrow(); + match task_opt { Some(task) => { match (*task).sched { Some(~ref mut sched) => { @@ -124,15 +126,17 @@ impl Local for Scheduler { impl Local for IoFactoryObject { fn put(_value: ~IoFactoryObject) { rtabort!("unimpl") } fn take() -> ~IoFactoryObject { rtabort!("unimpl") } - fn exists() -> bool { rtabort!("unimpl") } + fn exists(_: Option<IoFactoryObject>) -> bool { rtabort!("unimpl") } fn borrow<T>(_f: &fn(&mut IoFactoryObject) -> T) -> T { rtabort!("unimpl") } unsafe fn unsafe_take() -> ~IoFactoryObject { rtabort!("unimpl") } unsafe fn unsafe_borrow() -> *mut IoFactoryObject { - let sched = Local::unsafe_borrow::<Scheduler>(); + let sched: *mut Scheduler = Local::unsafe_borrow(); let io: *mut IoFactoryObject = (*sched).event_loop.io().unwrap(); return io; } - unsafe fn try_unsafe_borrow() -> Option<*mut IoFactoryObject> { rtabort!("unimpl") } + unsafe fn try_unsafe_borrow() -> Option<*mut IoFactoryObject> { + rtabort!("unimpl") + } } @@ -198,7 +202,7 @@ mod test { let task = ~Task::new_root(&mut sched.stack_pool, None, || {}); Local::put(task); - let res = do Local::borrow::<Task,bool> |_task| { + let res = do Local::borrow |_task: &mut Task| { true }; assert!(res) diff --git a/src/libstd/rt/local_heap.rs b/src/libstd/rt/local_heap.rs index aa8c5dd4674..12ec19a1ecc 100644 --- a/src/libstd/rt/local_heap.rs +++ b/src/libstd/rt/local_heap.rs @@ -13,7 +13,7 @@ use libc; use libc::{c_void, uintptr_t, size_t}; use ops::Drop; -use option::{Some, None}; +use option::{Option, None, Some}; use rt::local::Local; use rt::task::Task; use unstable::raw; @@ -89,7 +89,8 @@ impl Drop for LocalHeap { // A little compatibility function pub unsafe fn local_free(ptr: *libc::c_char) { // XXX: Unsafe borrow for speed. Lame. - match Local::try_unsafe_borrow::<Task>() { + let task_ptr: Option<*mut Task> = Local::try_unsafe_borrow(); + match task_ptr { Some(task) => { (*task).heap.free(ptr as *libc::c_void); } @@ -98,7 +99,7 @@ pub unsafe fn local_free(ptr: *libc::c_char) { } pub fn live_allocs() -> *raw::Box<()> { - let region = do Local::borrow::<Task, *BoxedRegion> |task| { + let region = do Local::borrow |task: &mut Task| { task.heap.boxed_region }; diff --git a/src/libstd/rt/mod.rs b/src/libstd/rt/mod.rs index 7436efb5bf5..6dbeb8c0ea9 100644 --- a/src/libstd/rt/mod.rs +++ b/src/libstd/rt/mod.rs @@ -64,7 +64,7 @@ use cell::Cell; use clone::Clone; use container::Container; use iterator::{Iterator, range}; -use option::{Some, None}; +use option::{Option, None, Some}; use ptr::RawPtr; use rt::local::Local; use rt::sched::{Scheduler, Shutdown}; @@ -408,7 +408,8 @@ fn run_(main: ~fn(), use_main_sched: bool) -> int { pub fn in_sched_context() -> bool { unsafe { - match Local::try_unsafe_borrow::<Task>() { + let task_ptr: Option<*mut Task> = Local::try_unsafe_borrow(); + match task_ptr { Some(task) => { match (*task).task_type { SchedTask => true, @@ -422,7 +423,8 @@ pub fn in_sched_context() -> bool { pub fn in_green_task_context() -> bool { unsafe { - match Local::try_unsafe_borrow::<Task>() { + let task: Option<*mut Task> = Local::try_unsafe_borrow(); + match task { Some(task) => { match (*task).task_type { GreenTask(_) => true, diff --git a/src/libstd/rt/sched.rs b/src/libstd/rt/sched.rs index 7d59627ba39..b393832871d 100644 --- a/src/libstd/rt/sched.rs +++ b/src/libstd/rt/sched.rs @@ -169,13 +169,13 @@ impl Scheduler { // successfully run the input task. Start by running the // scheduler. Grab it out of TLS - performing the scheduler // action will have given it away. - let sched = Local::take::<Scheduler>(); + let sched: ~Scheduler = Local::take(); rtdebug!("starting scheduler %u", sched.sched_id()); sched.run(); // Close the idle callback. - let mut sched = Local::take::<Scheduler>(); + let mut sched: ~Scheduler = Local::take(); sched.idle_callback.get_mut_ref().close(); // Make one go through the loop to run the close callback. sched.run(); @@ -185,7 +185,7 @@ impl Scheduler { // cleaning up the memory it uses. As we didn't actually call // task.run() on the scheduler task we never get through all // the cleanup code it runs. - let mut stask = Local::take::<Task>(); + let mut stask: ~Task = Local::take(); rtdebug!("stopping scheduler %u", stask.sched.get_ref().sched_id()); @@ -212,7 +212,7 @@ impl Scheduler { // Our scheduler must be in the task before the event loop // is started. let self_sched = Cell::new(self_sched); - do Local::borrow::<Task,()> |stask| { + do Local::borrow |stask: &mut Task| { stask.sched = Some(self_sched.take()); }; @@ -234,7 +234,7 @@ impl Scheduler { // already have a scheduler stored in our local task, so we // start off by taking it. This is the only path through the // scheduler where we get the scheduler this way. - let mut sched = Local::take::<Scheduler>(); + let mut sched: ~Scheduler = Local::take(); // Assume that we need to continue idling unless we reach the // end of this function without performing an action. @@ -522,7 +522,7 @@ impl Scheduler { // The current task is grabbed from TLS, not taken as an input. // Doing an unsafe_take to avoid writing back a null pointer - // We're going to call `put` later to do that. - let current_task: ~Task = unsafe { Local::unsafe_take::<Task>() }; + let current_task: ~Task = unsafe { Local::unsafe_take() }; // Check that the task is not in an atomically() section (e.g., // holding a pthread mutex, which could deadlock the scheduler). @@ -554,7 +554,8 @@ impl Scheduler { let current_task: &mut Task = match sched.cleanup_job { Some(CleanupJob { task: ref task, _ }) => { - transmute_mut_region(*transmute_mut_unsafe(task)) + let task_ptr: *~Task = task; + transmute_mut_region(*transmute_mut_unsafe(task_ptr)) } None => { rtabort!("no cleanup job"); @@ -580,7 +581,7 @@ impl Scheduler { // run the cleanup job, as expected by the previously called // swap_contexts function. unsafe { - let task = Local::unsafe_borrow::<Task>(); + let task: *mut Task = Local::unsafe_borrow(); (*task).sched.get_mut_ref().run_cleanup_job(); // Must happen after running the cleanup job (of course). @@ -685,13 +686,13 @@ impl Scheduler { } pub fn run_task(task: ~Task) { - let sched = Local::take::<Scheduler>(); + let sched: ~Scheduler = Local::take(); sched.process_task(task, Scheduler::switch_task).map_move(Local::put); } pub fn run_task_later(next_task: ~Task) { let next_task = Cell::new(next_task); - do Local::borrow::<Scheduler,()> |sched| { + do Local::borrow |sched: &mut Scheduler| { sched.enqueue_task(next_task.take()); }; } @@ -1023,12 +1024,12 @@ mod test { // exit before emptying the work queue do run_in_newsched_task { do spawntask { - let sched = Local::take::<Scheduler>(); + let sched: ~Scheduler = Local::take(); do sched.deschedule_running_task_and_then |sched, task| { let task = Cell::new(task); do sched.event_loop.callback_ms(10) { rtdebug!("in callback"); - let mut sched = Local::take::<Scheduler>(); + let mut sched: ~Scheduler = Local::take(); sched.enqueue_blocked_task(task.take()); Local::put(sched); } diff --git a/src/libstd/rt/select.rs b/src/libstd/rt/select.rs index 19a4948af3c..6cde0a1f216 100644 --- a/src/libstd/rt/select.rs +++ b/src/libstd/rt/select.rs @@ -26,3 +26,4 @@ pub trait SelectInner { pub trait SelectPortInner<T> { fn recv_ready(self) -> Option<T>; } + diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs index 9c2a6e646d2..b1ab7a6cd5d 100644 --- a/src/libstd/rt/task.rs +++ b/src/libstd/rt/task.rs @@ -93,7 +93,7 @@ impl Task { pub fn build_homed_child(stack_size: Option<uint>, f: ~fn(), home: SchedHome) -> ~Task { let f = Cell::new(f); let home = Cell::new(home); - do Local::borrow::<Task, ~Task> |running_task| { + do Local::borrow |running_task: &mut Task| { let mut sched = running_task.sched.take_unwrap(); let new_task = ~running_task.new_child_homed(&mut sched.stack_pool, stack_size, @@ -111,7 +111,7 @@ impl Task { pub fn build_homed_root(stack_size: Option<uint>, f: ~fn(), home: SchedHome) -> ~Task { let f = Cell::new(f); let home = Cell::new(home); - do Local::borrow::<Task, ~Task> |running_task| { + do Local::borrow |running_task: &mut Task| { let mut sched = running_task.sched.take_unwrap(); let new_task = ~Task::new_root_homed(&mut sched.stack_pool, stack_size, @@ -305,7 +305,7 @@ impl Task { // Grab both the scheduler and the task from TLS and check if the // task is executing on an appropriate scheduler. pub fn on_appropriate_sched() -> bool { - do Local::borrow::<Task,bool> |task| { + do Local::borrow |task: &mut Task| { let sched_id = task.sched.get_ref().sched_id(); let sched_run_anything = task.sched.get_ref().run_anything; match task.task_type { @@ -369,7 +369,7 @@ impl Coroutine { unsafe { // Again - might work while safe, or it might not. - do Local::borrow::<Scheduler,()> |sched| { + do Local::borrow |sched: &mut Scheduler| { sched.run_cleanup_job(); } @@ -378,7 +378,7 @@ impl Coroutine { // simply unsafe_borrow it to get this reference. We // need to still have the task in TLS though, so we // need to unsafe_borrow. - let task = Local::unsafe_borrow::<Task>(); + let task: *mut Task = Local::unsafe_borrow(); do (*task).run { // N.B. Removing `start` from the start wrapper @@ -397,7 +397,7 @@ impl Coroutine { } // We remove the sched from the Task in TLS right now. - let sched = Local::take::<Scheduler>(); + let sched: ~Scheduler = Local::take(); // ... allowing us to give it away when performing a // scheduling operation. sched.terminate_current_task() diff --git a/src/libstd/rt/tube.rs b/src/libstd/rt/tube.rs index 247893f75de..b8e535e4c7d 100644 --- a/src/libstd/rt/tube.rs +++ b/src/libstd/rt/tube.rs @@ -51,7 +51,7 @@ impl<T> Tube<T> { // There's a waiting task. Wake it up rtdebug!("waking blocked tube"); let task = (*state).blocked_task.take_unwrap(); - let sched = Local::take::<Scheduler>(); + let sched: ~Scheduler = Local::take(); sched.resume_blocked_task_immediately(task); } } @@ -67,7 +67,7 @@ impl<T> Tube<T> { rtdebug!("blocking on tube recv"); assert!(self.p.refcount() > 1); // There better be somebody to wake us up assert!((*state).blocked_task.is_none()); - let sched = Local::take::<Scheduler>(); + let sched: ~Scheduler = Local::take(); do sched.deschedule_running_task_and_then |_, task| { (*state).blocked_task = Some(task); } @@ -102,7 +102,7 @@ mod test { let mut tube: Tube<int> = Tube::new(); let tube_clone = tube.clone(); let tube_clone_cell = Cell::new(tube_clone); - let sched = Local::take::<Scheduler>(); + let sched: ~Scheduler = Local::take(); do sched.deschedule_running_task_and_then |sched, task| { let mut tube_clone = tube_clone_cell.take(); tube_clone.send(1); @@ -119,7 +119,7 @@ mod test { let mut tube: Tube<int> = Tube::new(); let tube_clone = tube.clone(); let tube_clone = Cell::new(tube_clone); - let sched = Local::take::<Scheduler>(); + let sched: ~Scheduler = Local::take(); do sched.deschedule_running_task_and_then |sched, task| { let tube_clone = Cell::new(tube_clone.take()); do sched.event_loop.callback { @@ -143,7 +143,7 @@ mod test { let mut tube: Tube<int> = Tube::new(); let tube_clone = tube.clone(); let tube_clone = Cell::new(tube_clone); - let sched = Local::take::<Scheduler>(); + let sched: ~Scheduler = Local::take(); do sched.deschedule_running_task_and_then |sched, task| { callback_send(tube_clone.take(), 0); @@ -151,7 +151,7 @@ mod test { if i == 100 { return; } let tube = Cell::new(Cell::new(tube)); - do Local::borrow::<Scheduler, ()> |sched| { + do Local::borrow |sched: &mut Scheduler| { let tube = tube.take(); do sched.event_loop.callback { let mut tube = tube.take(); diff --git a/src/libstd/rt/uv/uvio.rs b/src/libstd/rt/uv/uvio.rs index 6e79a78e061..e620ab274b1 100644 --- a/src/libstd/rt/uv/uvio.rs +++ b/src/libstd/rt/uv/uvio.rs @@ -57,7 +57,7 @@ trait HomingIO { let old_home = Cell::new_empty(); let old_home_ptr = &old_home; do task::unkillable { // FIXME(#8674) - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); do scheduler.deschedule_running_task_and_then |_, task| { // get the old home first do task.wake().map_move |mut task| { @@ -72,7 +72,7 @@ trait HomingIO { // unhome home do task::unkillable { // FIXME(#8674) - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); do scheduler.deschedule_running_task_and_then |scheduler, task| { do task.wake().map_move |mut task| { task.give_home(old_home.take()); @@ -92,7 +92,7 @@ trait HomingIO { // go home let old_home = Cell::new_empty(); let old_home_ptr = &old_home; - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); do scheduler.deschedule_running_task_and_then |_, task| { // get the old home first do task.wake().map_move |mut task| { @@ -102,11 +102,11 @@ trait HomingIO { } // do IO - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); let a = io_sched(self, scheduler); // unhome home - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); do scheduler.deschedule_running_task_and_then |scheduler, task| { do task.wake().map_move |mut task| { task.give_home(old_home.take()); @@ -122,7 +122,7 @@ trait HomingIO { // get a handle for the current scheduler macro_rules! get_handle_to_current_scheduler( - () => (do Local::borrow::<Scheduler, SchedHandle> |sched| { sched.make_handle() }) + () => (do Local::borrow |sched: &mut Scheduler| { sched.make_handle() }) ) enum SocketNameKind { @@ -375,7 +375,7 @@ mod test_remote { let mut tube = Tube::new(); let tube_clone = tube.clone(); let remote_cell = Cell::new_empty(); - do Local::borrow::<Scheduler, ()>() |sched| { + do Local::borrow |sched: &mut Scheduler| { let tube_clone = tube_clone.clone(); let tube_clone_cell = Cell::new(tube_clone); let remote = do sched.event_loop.remote_callback { @@ -416,7 +416,7 @@ impl IoFactory for UvIoFactory { // Block this task and take ownership, switch to scheduler context do task::unkillable { // FIXME(#8674) - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); do scheduler.deschedule_running_task_and_then |_, task| { let mut tcp = TcpWatcher::new(self.uv_loop()); @@ -434,7 +434,7 @@ impl IoFactory for UvIoFactory { unsafe { (*result_cell_ptr).put_back(res); } // Context switch - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } Some(_) => { @@ -442,7 +442,7 @@ impl IoFactory for UvIoFactory { do stream.close { let res = Err(uv_error_to_io_error(status.unwrap())); unsafe { (*result_cell_ptr).put_back(res); } - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -464,11 +464,11 @@ impl IoFactory for UvIoFactory { } Err(uverr) => { do task::unkillable { // FIXME(#8674) - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); do scheduler.deschedule_running_task_and_then |_, task| { let task_cell = Cell::new(task); do watcher.as_stream().close { - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -487,11 +487,11 @@ impl IoFactory for UvIoFactory { } Err(uverr) => { do task::unkillable { // FIXME(#8674) - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); do scheduler.deschedule_running_task_and_then |_, task| { let task_cell = Cell::new(task); do watcher.close { - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -539,7 +539,7 @@ impl IoFactory for UvIoFactory { IoError>> = &result_cell; let path_cell = Cell::new(path); do task::unkillable { // FIXME(#8674) - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); do scheduler.deschedule_running_task_and_then |_, task| { let task_cell = Cell::new(task); let path = path_cell.take(); @@ -553,12 +553,12 @@ impl IoFactory for UvIoFactory { loop_, fd, true, home) as ~RtioFileStream; let res = Ok(fs); unsafe { (*result_cell_ptr).put_back(res); } - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } else { let res = Err(uv_error_to_io_error(err.unwrap())); unsafe { (*result_cell_ptr).put_back(res); } - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } }; @@ -573,7 +573,7 @@ impl IoFactory for UvIoFactory { let result_cell_ptr: *Cell<Result<(), IoError>> = &result_cell; let path_cell = Cell::new(path); do task::unkillable { // FIXME(#8674) - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); do scheduler.deschedule_running_task_and_then |_, task| { let task_cell = Cell::new(task); let path = path_cell.take(); @@ -583,7 +583,7 @@ impl IoFactory for UvIoFactory { Some(err) => Err(uv_error_to_io_error(err)) }; unsafe { (*result_cell_ptr).put_back(res); } - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); }; }; @@ -625,7 +625,7 @@ impl Drop for UvTcpListener { do scheduler.deschedule_running_task_and_then |_, task| { let task_cell = Cell::new(task); do self_.watcher().as_stream().close { - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -717,7 +717,7 @@ impl Drop for UvTcpStream { do scheduler.deschedule_running_task_and_then |_, task| { let task_cell = Cell::new(task); do self_.watcher.as_stream().close { - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -765,7 +765,7 @@ impl RtioTcpStream for UvTcpStream { unsafe { (*result_cell_ptr).put_back(result); } - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -793,7 +793,7 @@ impl RtioTcpStream for UvTcpStream { unsafe { (*result_cell_ptr).put_back(result); } - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -876,7 +876,7 @@ impl Drop for UvUdpSocket { do scheduler.deschedule_running_task_and_then |_, task| { let task_cell = Cell::new(task); do self_.watcher.close { - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -917,7 +917,7 @@ impl RtioUdpSocket for UvUdpSocket { unsafe { (*result_cell_ptr).put_back(result); } - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -944,7 +944,7 @@ impl RtioUdpSocket for UvUdpSocket { unsafe { (*result_cell_ptr).put_back(result); } - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -1094,7 +1094,7 @@ impl Drop for UvTimer { do scheduler.deschedule_running_task_and_then |_, task| { let task_cell = Cell::new(task); do self_.watcher.close { - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -1110,7 +1110,7 @@ impl RtioTimer for UvTimer { let task_cell = Cell::new(task); do self_.watcher.start(msecs, 0) |_, status| { assert!(status.is_none()); - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); } } @@ -1154,7 +1154,7 @@ impl UvFileStream { Some(err) => Err(uv_error_to_io_error(err)) }; unsafe { (*result_cell_ptr).put_back(res); } - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); }; }; @@ -1175,7 +1175,7 @@ impl UvFileStream { Some(err) => Err(uv_error_to_io_error(err)) }; unsafe { (*result_cell_ptr).put_back(res); } - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); }; }; @@ -1208,7 +1208,7 @@ impl Drop for UvFileStream { do scheduler.deschedule_running_task_and_then |_, task| { let task_cell = Cell::new(task); do self_.fd.close(&self.loop_) |_,_| { - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); scheduler.resume_blocked_task_immediately(task_cell.take()); }; }; @@ -1254,7 +1254,7 @@ impl RtioFileStream for UvFileStream { fn test_simple_io_no_connect() { do run_in_newsched_task { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let addr = next_test_ip4(); let maybe_chan = (*io).tcp_connect(addr); assert!(maybe_chan.is_err()); @@ -1266,7 +1266,7 @@ fn test_simple_io_no_connect() { fn test_simple_udp_io_bind_only() { do run_in_newsched_task { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let addr = next_test_ip4(); let maybe_socket = (*io).udp_bind(addr); assert!(maybe_socket.is_ok()); @@ -1303,7 +1303,9 @@ fn test_simple_homed_udp_io_bind_then_move_task_then_home_and_close() { }; let test_function: ~fn() = || { - let io = unsafe { Local::unsafe_borrow::<IoFactoryObject>() }; + let io: *mut IoFactoryObject = unsafe { + Local::unsafe_borrow() + }; let addr = next_test_ip4(); let maybe_socket = unsafe { (*io).udp_bind(addr) }; // this socket is bound to this event loop @@ -1311,7 +1313,7 @@ fn test_simple_homed_udp_io_bind_then_move_task_then_home_and_close() { // block self on sched1 do task::unkillable { // FIXME(#8674) - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); do scheduler.deschedule_running_task_and_then |_, task| { // unblock task do task.wake().map_move |task| { @@ -1377,7 +1379,9 @@ fn test_simple_homed_udp_io_bind_then_move_handle_then_home_and_close() { let chan = Cell::new(chan); let body1: ~fn() = || { - let io = unsafe { Local::unsafe_borrow::<IoFactoryObject>() }; + let io: *mut IoFactoryObject = unsafe { + Local::unsafe_borrow() + }; let addr = next_test_ip4(); let socket = unsafe { (*io).udp_bind(addr) }; assert!(socket.is_ok()); @@ -1430,7 +1434,7 @@ fn test_simple_tcp_server_and_client() { // Start the server first so it's listening when we connect do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut listener = (*io).tcp_bind(addr).unwrap(); let mut stream = listener.accept().unwrap(); let mut buf = [0, .. 2048]; @@ -1445,7 +1449,7 @@ fn test_simple_tcp_server_and_client() { do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut stream = (*io).tcp_connect(addr).unwrap(); stream.write([0, 1, 2, 3, 4, 5, 6, 7]); } @@ -1489,7 +1493,9 @@ fn test_simple_tcp_server_and_client_on_diff_threads() { }; let server_fn: ~fn() = || { - let io = unsafe { Local::unsafe_borrow::<IoFactoryObject>() }; + let io: *mut IoFactoryObject = unsafe { + Local::unsafe_borrow() + }; let mut listener = unsafe { (*io).tcp_bind(server_addr).unwrap() }; let mut stream = listener.accept().unwrap(); let mut buf = [0, .. 2048]; @@ -1501,7 +1507,9 @@ fn test_simple_tcp_server_and_client_on_diff_threads() { }; let client_fn: ~fn() = || { - let io = unsafe { Local::unsafe_borrow::<IoFactoryObject>() }; + let io: *mut IoFactoryObject = unsafe { + Local::unsafe_borrow() + }; let mut stream = unsafe { (*io).tcp_connect(client_addr) }; while stream.is_err() { stream = unsafe { (*io).tcp_connect(client_addr) }; @@ -1540,7 +1548,7 @@ fn test_simple_udp_server_and_client() { do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut server_socket = (*io).udp_bind(server_addr).unwrap(); let mut buf = [0, .. 2048]; let (nread,src) = server_socket.recvfrom(buf).unwrap(); @@ -1555,7 +1563,7 @@ fn test_simple_udp_server_and_client() { do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut client_socket = (*io).udp_bind(client_addr).unwrap(); client_socket.sendto([0, 1, 2, 3, 4, 5, 6, 7], server_addr); } @@ -1569,7 +1577,7 @@ fn test_read_and_block() { let addr = next_test_ip4(); do spawntask { - let io = unsafe { Local::unsafe_borrow::<IoFactoryObject>() }; + let io: *mut IoFactoryObject = unsafe { Local::unsafe_borrow() }; let mut listener = unsafe { (*io).tcp_bind(addr).unwrap() }; let mut stream = listener.accept().unwrap(); let mut buf = [0, .. 2048]; @@ -1588,7 +1596,7 @@ fn test_read_and_block() { reads += 1; do task::unkillable { // FIXME(#8674) - let scheduler = Local::take::<Scheduler>(); + let scheduler: ~Scheduler = Local::take(); // Yield to the other task in hopes that it // will trigger a read callback while we are // not ready for it @@ -1605,7 +1613,7 @@ fn test_read_and_block() { do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut stream = (*io).tcp_connect(addr).unwrap(); stream.write([0, 1, 2, 3, 4, 5, 6, 7]); stream.write([0, 1, 2, 3, 4, 5, 6, 7]); @@ -1625,7 +1633,7 @@ fn test_read_read_read() { do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut listener = (*io).tcp_bind(addr).unwrap(); let mut stream = listener.accept().unwrap(); let buf = [1, .. 2048]; @@ -1639,7 +1647,7 @@ fn test_read_read_read() { do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut stream = (*io).tcp_connect(addr).unwrap(); let mut buf = [0, .. 2048]; let mut total_bytes_read = 0; @@ -1665,7 +1673,7 @@ fn test_udp_twice() { do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut client = (*io).udp_bind(client_addr).unwrap(); assert!(client.sendto([1], server_addr).is_ok()); assert!(client.sendto([2], server_addr).is_ok()); @@ -1674,7 +1682,7 @@ fn test_udp_twice() { do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut server = (*io).udp_bind(server_addr).unwrap(); let mut buf1 = [0]; let mut buf2 = [0]; @@ -1702,7 +1710,7 @@ fn test_udp_many_read() { do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut server_out = (*io).udp_bind(server_out_addr).unwrap(); let mut server_in = (*io).udp_bind(server_in_addr).unwrap(); let msg = [1, .. 2048]; @@ -1725,7 +1733,7 @@ fn test_udp_many_read() { do spawntask { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let mut client_out = (*io).udp_bind(client_out_addr).unwrap(); let mut client_in = (*io).udp_bind(client_in_addr).unwrap(); let mut total_bytes_recv = 0; @@ -1754,7 +1762,7 @@ fn test_udp_many_read() { fn test_timer_sleep_simple() { do run_in_newsched_task { unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let timer = (*io).timer_init(); do timer.map_move |mut t| { t.sleep(1) }; } @@ -1768,7 +1776,7 @@ fn file_test_uvio_full_simple_impl() { use path::Path; use rt::io::{Open, Create, ReadWrite, Read}; unsafe { - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); let write_val = "hello uvio!"; let path = "./tmp/file_test_uvio_full.txt"; { @@ -1802,7 +1810,7 @@ fn uvio_naive_print(input: &str) { use str::StrSlice; unsafe { use libc::{STDOUT_FILENO}; - let io = Local::unsafe_borrow::<IoFactoryObject>(); + let io: *mut IoFactoryObject = Local::unsafe_borrow(); { let mut fd = (*io).fs_from_raw_fd(STDOUT_FILENO, false); let write_buf = input.as_bytes(); |
