mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
std::rt: Remove an unnecessary allocation from the main sched loop
This commit is contained in:
parent
8fc1d9db21
commit
44c88ddf42
@ -59,7 +59,7 @@ pub struct Task {
|
||||
}
|
||||
|
||||
pub enum TaskType {
|
||||
GreenTask(Option<~SchedHome>),
|
||||
GreenTask(Option<SchedHome>),
|
||||
SchedTask
|
||||
}
|
||||
|
||||
@ -173,7 +173,7 @@ impl Task {
|
||||
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 @@ impl Task {
|
||||
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 @@ impl Task {
|
||||
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 @@ impl Task {
|
||||
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 @@ impl Task {
|
||||
|
||||
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 @@ impl Task {
|
||||
|
||||
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 @@ impl Task {
|
||||
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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user