提交 44c88ddf 编写于 作者: B Brian Anderson

std::rt: Remove an unnecessary allocation from the main sched loop

上级 8fc1d9db
......@@ -59,7 +59,7 @@ pub struct Task {
}
pub enum TaskType {
GreenTask(Option<~SchedHome>),
GreenTask(Option<SchedHome>),
SchedTask
}
......@@ -173,7 +173,7 @@ pub fn new_root_homed(stack_pool: &mut StackPool,
name: None,
coroutine: Some(Coroutine::new(stack_pool, stack_size, start)),
sched: None,
task_type: GreenTask(Some(~home)),
task_type: GreenTask(Some(home)),
borrow_list: None
}
}
......@@ -196,7 +196,7 @@ pub fn new_child_homed(&mut self,
name: None,
coroutine: Some(Coroutine::new(stack_pool, stack_size, start)),
sched: None,
task_type: GreenTask(Some(~home)),
task_type: GreenTask(Some(home)),
borrow_list: None
}
}
......@@ -204,7 +204,7 @@ pub fn new_child_homed(&mut self,
pub fn give_home(&mut self, new_home: SchedHome) {
match self.task_type {
GreenTask(ref mut home) => {
*home = Some(~new_home);
*home = Some(new_home);
}
SchedTask => {
rtabort!("type error: used SchedTask as GreenTask");
......@@ -216,7 +216,7 @@ pub fn take_unwrap_home(&mut self) -> SchedHome {
match self.task_type {
GreenTask(ref mut home) => {
let out = home.take_unwrap();
return *out;
return out;
}
SchedTask => {
rtabort!("type error: used SchedTask as GreenTask");
......@@ -275,8 +275,8 @@ pub fn run(&mut self, f: &fn()) {
pub fn is_home_no_tls(&self, sched: &~Scheduler) -> bool {
match self.task_type {
GreenTask(Some(~AnySched)) => { false }
GreenTask(Some(~Sched(SchedHandle { sched_id: ref id, _}))) => {
GreenTask(Some(AnySched)) => { false }
GreenTask(Some(Sched(SchedHandle { sched_id: ref id, _}))) => {
*id == sched.sched_id()
}
GreenTask(None) => {
......@@ -291,8 +291,8 @@ pub fn is_home_no_tls(&self, sched: &~Scheduler) -> bool {
pub fn homed(&self) -> bool {
match self.task_type {
GreenTask(Some(~AnySched)) => { false }
GreenTask(Some(~Sched(SchedHandle { _ }))) => { true }
GreenTask(Some(AnySched)) => { false }
GreenTask(Some(Sched(SchedHandle { _ }))) => { true }
GreenTask(None) => {
rtabort!("task without home");
}
......@@ -309,11 +309,11 @@ pub fn on_appropriate_sched() -> bool {
let sched_id = task.sched.get_ref().sched_id();
let sched_run_anything = task.sched.get_ref().run_anything;
match task.task_type {
GreenTask(Some(~AnySched)) => {
GreenTask(Some(AnySched)) => {
rtdebug!("anysched task in sched check ****");
sched_run_anything
}
GreenTask(Some(~Sched(SchedHandle { sched_id: ref id, _ }))) => {
GreenTask(Some(Sched(SchedHandle { sched_id: ref id, _ }))) => {
rtdebug!("homed task in sched check ****");
*id == sched_id
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册