Struct style::context::ThreadLocalStyleContext
source · pub struct ThreadLocalStyleContext<E: TElement> {
pub sharing_cache: StyleSharingCache<E>,
pub rule_cache: RuleCache,
pub bloom_filter: StyleBloom<E>,
pub tasks: SequentialTaskList<E>,
pub statistics: PerThreadTraversalStatistics,
pub stack_limit_checker: StackLimitChecker,
pub selector_caches: SelectorCaches,
}
Expand description
A thread-local style context.
This context contains data that needs to be used during restyling, but is not required to be unique among worker threads, so we create one per worker thread in order to be able to mutate it without locking.
Fields§
§sharing_cache: StyleSharingCache<E>
A cache to share style among siblings.
rule_cache: RuleCache
A cache from matched properties to elements that match those.
bloom_filter: StyleBloom<E>
The bloom filter used to fast-reject selector-matching.
tasks: SequentialTaskList<E>
A set of tasks to be run (on the parent thread) in sequential mode after the rest of the styling is complete. This is useful for infrequently-needed non-threadsafe operations.
It’s important that goes after the style sharing cache and the bloom filter, to ensure they’re dropped before we execute the tasks, which could create another ThreadLocalStyleContext for style computation.
statistics: PerThreadTraversalStatistics
Statistics about the traversal.
stack_limit_checker: StackLimitChecker
A checker used to ensure that parallel.rs does not recurse indefinitely even on arbitrarily deep trees. See Gecko bug 1376883.
selector_caches: SelectorCaches
Collection of caches (And cache-likes) for speeding up expensive selector matches.
Implementations§
Auto Trait Implementations§
impl<E> Freeze for ThreadLocalStyleContext<E>where
E: Freeze,
impl<E> !RefUnwindSafe for ThreadLocalStyleContext<E>
impl<E> Send for ThreadLocalStyleContext<E>
impl<E> Sync for ThreadLocalStyleContext<E>where
E: Sync,
impl<E> Unpin for ThreadLocalStyleContext<E>where
E: Unpin,
impl<E> !UnwindSafe for ThreadLocalStyleContext<E>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more