diff options
| author | toddaaro <github@opprobrio.us> | 2013-08-01 15:08:51 -0700 |
|---|---|---|
| committer | toddaaro <github@opprobrio.us> | 2013-08-01 15:38:48 -0700 |
| commit | 8e98eabce52b29d2e49ce63713ad2e1e04115bab (patch) | |
| tree | bdb6d50d12751f70db7c3425834f62011b438595 /src/libstd | |
| parent | 1d82fe5aea71b1c265634f32716b268972141efb (diff) | |
| download | rust-8e98eabce52b29d2e49ce63713ad2e1e04115bab.tar.gz rust-8e98eabce52b29d2e49ce63713ad2e1e04115bab.zip | |
modified local to include an implementation for try_unsafe_borrow::<Task> so that the log methods will work
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/rt/io/net/tcp.rs | 4 | ||||
| -rw-r--r-- | src/libstd/rt/local.rs | 10 | ||||
| -rw-r--r-- | src/libstd/rt/task.rs | 1 | ||||
| -rw-r--r-- | src/libstd/task/mod.rs | 12 |
4 files changed, 17 insertions, 10 deletions
diff --git a/src/libstd/rt/io/net/tcp.rs b/src/libstd/rt/io/net/tcp.rs index 449df8cddea..2daa64e8085 100644 --- a/src/libstd/rt/io/net/tcp.rs +++ b/src/libstd/rt/io/net/tcp.rs @@ -380,7 +380,7 @@ mod test { } do spawntask { - for max.times { + do max.times { let mut stream = TcpStream::connect(addr); stream.write([99]); } @@ -405,7 +405,7 @@ mod test { } do spawntask { - for max.times { + do max.times { let mut stream = TcpStream::connect(addr); stream.write([99]); } diff --git a/src/libstd/rt/local.rs b/src/libstd/rt/local.rs index 71e60a6a923..7ab63233cff 100644 --- a/src/libstd/rt/local.rs +++ b/src/libstd/rt/local.rs @@ -44,7 +44,13 @@ impl Local for Task { } } unsafe fn unsafe_borrow() -> *mut Task { local_ptr::unsafe_borrow() } - unsafe fn try_unsafe_borrow() -> Option<*mut Task> { rtabort!("unimpl task try_unsafe_borrow") } + unsafe fn try_unsafe_borrow() -> Option<*mut Task> { + if Local::exists::<Task>() { + Some(Local::unsafe_borrow()) + } else { + None + } + } } impl Local for Scheduler { @@ -95,7 +101,7 @@ impl Local for Scheduler { } } unsafe fn try_unsafe_borrow() -> Option<*mut Scheduler> { - if Local::exists::<Task>() { + if Local::exists::<Scheduler>() { Some(Local::unsafe_borrow()) } else { None diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs index fcc6ebeada6..23a0d28e457 100644 --- a/src/libstd/rt/task.rs +++ b/src/libstd/rt/task.rs @@ -129,6 +129,7 @@ impl Task { death: Death::new(), destroyed: false, coroutine: Some(Coroutine::empty()), + name: None, sched: None, task_type: SchedTask } diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs index 5e4d48403cc..7a864ecb867 100644 --- a/src/libstd/task/mod.rs +++ b/src/libstd/task/mod.rs @@ -685,7 +685,7 @@ fn test_spawn_unlinked_unsup_no_fail_down() { // grandchild sends on a port let ch = ch.clone(); do spawn_unlinked { // Give middle task a chance to fail-but-not-kill-us. - for 16.times { task::yield(); } + do 16.times { task::yield(); } ch.send(()); // If killed first, grandparent hangs. } fail!(); // Shouldn't kill either (grand)parent or (grand)child. @@ -706,7 +706,7 @@ fn test_spawn_unlinked_sup_no_fail_up() { // child unlinked fails do run_in_newsched_task { do spawn_supervised { fail!(); } // Give child a chance to fail-but-not-kill-us. - for 16.times { task::yield(); } + do 16.times { task::yield(); } } } #[test] #[ignore(cfg(windows))] @@ -808,7 +808,7 @@ fn test_spawn_failure_propagate_grandchild() { do spawn_supervised { do spawn_supervised { block_forever(); } } - for 16.times { task::yield(); } + do 16.times { task::yield(); } fail!(); }; assert!(result.is_err()); @@ -824,7 +824,7 @@ fn test_spawn_failure_propagate_secondborn() { do spawn_supervised { do spawn { block_forever(); } // linked } - for 16.times { task::yield(); } + do 16.times { task::yield(); } fail!(); }; assert!(result.is_err()); @@ -840,7 +840,7 @@ fn test_spawn_failure_propagate_nephew_or_niece() { do spawn { // linked do spawn_supervised { block_forever(); } } - for 16.times { task::yield(); } + do 16.times { task::yield(); } fail!(); }; assert!(result.is_err()); @@ -856,7 +856,7 @@ fn test_spawn_linked_sup_propagate_sibling() { do spawn { // linked do spawn { block_forever(); } // linked } - for 16.times { task::yield(); } + do 16.times { task::yield(); } fail!(); }; assert!(result.is_err()); |
