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-20 12:17:00 -0700
committerBrian Anderson <banderson@mozilla.com>2013-06-20 12:17:00 -0700
commit357f087786cbd6516a38aff800cf9334bc5b85c5 (patch)
treee3582c4e0f16927c4dc1c377cf789b469cde8196 /src/libstd/task/spawn.rs
parentadeb7e77ccff938c0afb105a14a2ff4df4c7efc8 (diff)
parent4d39253a9623ff30c27cee3c9770634a41f4412d (diff)
downloadrust-357f087786cbd6516a38aff800cf9334bc5b85c5.tar.gz
rust-357f087786cbd6516a38aff800cf9334bc5b85c5.zip
Merge remote-tracking branch 'brson/io' into io-upstream
Conflicts:
	src/rt/rust_builtin.cpp
	src/rt/rustrt.def.in
Diffstat (limited to 'src/libstd/task/spawn.rs')
-rw-r--r--src/libstd/task/spawn.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libstd/task/spawn.rs b/src/libstd/task/spawn.rs
index 77053f39677..344a58a877f 100644
--- a/src/libstd/task/spawn.rs
+++ b/src/libstd/task/spawn.rs
@@ -92,6 +92,7 @@ use util;
 use unstable::sync::{Exclusive, exclusive};
 use rt::local::Local;
 use iterator::{IteratorUtil};
+use rt::task::Task;
 
 #[cfg(test)] use task::default_task_opts;
 #[cfg(test)] use comm;
@@ -580,9 +581,14 @@ 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);
-    sched.schedule_new_task(task);
+    let task = ~Coroutine::with_task(&mut sched.stack_pool,
+                                     task, f);
+    sched.schedule_task(task);
 }
 
 fn spawn_raw_oldsched(mut opts: TaskOpts, f: ~fn()) {