about summary refs log tree commit diff
path: root/src/libstd/task/spawn.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-06-15 19:31:46 -0700
committerBrian Anderson <banderson@mozilla.com>2013-06-15 19:31:46 -0700
commit3208fc36bf2c7e99451e21171f82dafef2ea51dc (patch)
tree0ac94c64e1601824d3e326964580a3b84295737a /src/libstd/task/spawn.rs
parentb08c4467980bc712995d421dd50c1cca2948b67b (diff)
parent505ef7e710ff890c0027fadad54997041b7ee93b (diff)
downloadrust-3208fc36bf2c7e99451e21171f82dafef2ea51dc.tar.gz
rust-3208fc36bf2c7e99451e21171f82dafef2ea51dc.zip
Merge remote-tracking branch 'brson/io-wip' into io
Conflicts:
	src/libstd/rt/sched.rs
	src/libstd/rt/task.rs
	src/libstd/rt/test.rs
	src/libstd/task/mod.rs
	src/libstd/task/spawn.rs
Diffstat (limited to 'src/libstd/task/spawn.rs')
-rw-r--r--src/libstd/task/spawn.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/libstd/task/spawn.rs b/src/libstd/task/spawn.rs
index 5e507238f67..bff4aa1498d 100644
--- a/src/libstd/task/spawn.rs
+++ b/src/libstd/task/spawn.rs
@@ -91,6 +91,7 @@ use uint;
 use util;
 use unstable::sync::{Exclusive, exclusive};
 use rt::local::Local;
+use rt::task::Task;
 
 #[cfg(test)] use task::default_task_opts;
 
@@ -576,8 +577,13 @@ pub fn spawn_raw(opts: TaskOpts, f: ~fn()) {
 fn spawn_raw_newsched(_opts: TaskOpts, f: ~fn()) {
     use rt::sched::*;
 
+    let task = do Local::borrow::<Task, ~Task>() |running_task| {
+        ~running_task.new_child()
+    };
+
     let mut sched = Local::take::<Scheduler>();
-    let task = ~Coroutine::new(&mut sched.stack_pool, f);
+    let task = ~Coroutine::with_task(&mut sched.stack_pool,
+                                     task, f);
     sched.schedule_task(task);
 }