about summary refs log tree commit diff
path: root/src/rt/rust_scheduler.cpp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-04-01 17:22:24 -0700
committerBrian Anderson <banderson@mozilla.com>2012-04-01 17:27:18 -0700
commit7c1be236a524980b65b01a327e2c55feb6295a52 (patch)
tree292e3380915c2f36ab174d3059b24257bb6e51e3 /src/rt/rust_scheduler.cpp
parentfb528dd7d613964e05dd682a6a98980a1ebdb4d6 (diff)
downloadrust-7c1be236a524980b65b01a327e2c55feb6295a52.tar.gz
rust-7c1be236a524980b65b01a327e2c55feb6295a52.zip
rt: Introduce rust_sched_launcher_factory. Sorry, I need one
Diffstat (limited to 'src/rt/rust_scheduler.cpp')
-rw-r--r--src/rt/rust_scheduler.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/rt/rust_scheduler.cpp b/src/rt/rust_scheduler.cpp
index 57b166208f9..82eac1b1c93 100644
--- a/src/rt/rust_scheduler.cpp
+++ b/src/rt/rust_scheduler.cpp
@@ -17,7 +17,8 @@ rust_scheduler::rust_scheduler(rust_kernel *kernel,
     num_threads(num_threads),
     id(id)
 {
-    create_task_threads();
+    rust_thread_sched_launcher_factory launchfac;
+    create_task_threads(&launchfac);
 }
 
 rust_scheduler::~rust_scheduler() {
@@ -25,11 +26,9 @@ rust_scheduler::~rust_scheduler() {
 }
 
 rust_sched_launcher *
-rust_scheduler::create_task_thread(int id) {
-    rust_srv *srv = this->srv->clone();
-    rust_sched_launcher *thread =
-        new (kernel, "rust_thread_sched_launcher")
-        rust_thread_sched_launcher(this, srv, id);
+rust_scheduler::create_task_thread(rust_sched_launcher_factory *launchfac,
+                                   int id) {
+    rust_sched_launcher *thread = launchfac->create(this, id);
     KLOG(kernel, kern, "created task thread: " PTR ", id: %d",
           thread, id);
     return thread;
@@ -44,11 +43,11 @@ rust_scheduler::destroy_task_thread(rust_sched_launcher *thread) {
 }
 
 void
-rust_scheduler::create_task_threads() {
+rust_scheduler::create_task_threads(rust_sched_launcher_factory *launchfac) {
     KLOG(kernel, kern, "Using %d scheduler threads.", num_threads);
 
     for(size_t i = 0; i < num_threads; ++i) {
-        threads.push(create_task_thread(i));
+        threads.push(create_task_thread(launchfac, i));
     }
 }