diff options
author | rohan.prinja <rohan.prinja@samsung.com> | 2015-11-14 05:07:55 +0900 |
---|---|---|
committer | Rohan Prinja <rohan.prinja@gmail.com> | 2016-01-10 17:58:13 +0900 |
commit | 1f02c4ebbb7d5ea49051f4391f1418f20c15d7a9 (patch) | |
tree | 7d61e58e746ddca93074ca6bca6849360a098b8c /components/util/task_state.rs | |
parent | f00532bab0382d1c24e6086314f26497fb6ffe0f (diff) | |
download | servo-1f02c4ebbb7d5ea49051f4391f1418f20c15d7a9.tar.gz servo-1f02c4ebbb7d5ea49051f4391f1418f20c15d7a9.zip |
task -> thread
Diffstat (limited to 'components/util/task_state.rs')
-rw-r--r-- | components/util/task_state.rs | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/components/util/task_state.rs b/components/util/task_state.rs deleted file mode 100644 index f67e059c4c1..00000000000 --- a/components/util/task_state.rs +++ /dev/null @@ -1,105 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -//! Supports dynamic assertions in debug builds about what sort of task is -//! running and what state it's in. -//! -//! In release builds, `get` returns 0. All of the other functions inline -//! away to nothing. - -pub use self::imp::{enter, exit, get, initialize}; - -bitflags! { - flags TaskState: u32 { - const SCRIPT = 0x01, - const LAYOUT = 0x02, - const PAINT = 0x04, - - const IN_WORKER = 0x0100, - const IN_GC = 0x0200, - const IN_HTML_PARSER = 0x0400, - } -} - -macro_rules! task_types ( ( $( $fun:ident = $flag:ident ; )* ) => ( - impl TaskState { - $( - #[cfg(debug_assertions)] - pub fn $fun(self) -> bool { - self.contains($flag) - } - #[cfg(not(debug_assertions))] - pub fn $fun(self) -> bool { - true - } - )* - } - - #[cfg(debug_assertions)] - static TYPES: &'static [TaskState] - = &[ $( $flag ),* ]; -)); - -task_types! { - is_script = SCRIPT; - is_layout = LAYOUT; - is_paint = PAINT; -} - -#[cfg(debug_assertions)] -mod imp { - use std::cell::RefCell; - use super::{TYPES, TaskState}; - - thread_local!(static STATE: RefCell<Option<TaskState>> = RefCell::new(None)); - - pub fn initialize(x: TaskState) { - STATE.with(|ref k| { - match *k.borrow() { - Some(s) => panic!("Task state already initialized as {:?}", s), - None => () - }; - *k.borrow_mut() = Some(x); - }); - get(); // check the assertion below - } - - pub fn get() -> TaskState { - let state = STATE.with(|ref k| { - match *k.borrow() { - None => panic!("Task state not initialized"), - Some(s) => s, - } - }); - - // Exactly one of the task type flags should be set. - assert_eq!(1, TYPES.iter().filter(|&&ty| state.contains(ty)).count()); - state - } - - pub fn enter(x: TaskState) { - let state = get(); - assert!(!state.intersects(x)); - STATE.with(|ref k| { - *k.borrow_mut() = Some(state | x); - }) - } - - pub fn exit(x: TaskState) { - let state = get(); - assert!(state.contains(x)); - STATE.with(|ref k| { - *k.borrow_mut() = Some(state & !x); - }) - } -} - -#[cfg(not(debug_assertions))] -mod imp { - use super::TaskState; - #[inline(always)] pub fn initialize(_: TaskState) { } - #[inline(always)] pub fn get() -> TaskState { TaskState::empty() } - #[inline(always)] pub fn enter(_: TaskState) { } - #[inline(always)] pub fn exit(_: TaskState) { } -} |