auto merge of #4588 : Ms2ger/servo/layout-cleanup, r=larsbergstrom

This commit is contained in:
bors-servo 2015-01-09 09:42:48 -07:00
commit 43e34d6d10
2 changed files with 10 additions and 14 deletions

View file

@ -99,24 +99,24 @@ impl<'a> LayoutContext<'a> {
#[inline(always)] #[inline(always)]
pub fn font_context<'a>(&'a self) -> &'a mut FontContext { pub fn font_context<'a>(&'a self) -> &'a mut FontContext {
unsafe { unsafe {
let cached_context = &*self.cached_local_layout_context; let cached_context = &mut *self.cached_local_layout_context;
mem::transmute(&cached_context.font_context) &mut cached_context.font_context
} }
} }
#[inline(always)] #[inline(always)]
pub fn applicable_declarations_cache<'a>(&'a self) -> &'a mut ApplicableDeclarationsCache { pub fn applicable_declarations_cache<'a>(&'a self) -> &'a mut ApplicableDeclarationsCache {
unsafe { unsafe {
let cached_context = &*self.cached_local_layout_context; let cached_context = &mut *self.cached_local_layout_context;
mem::transmute(&cached_context.applicable_declarations_cache) &mut cached_context.applicable_declarations_cache
} }
} }
#[inline(always)] #[inline(always)]
pub fn style_sharing_candidate_cache<'a>(&'a self) -> &'a mut StyleSharingCandidateCache { pub fn style_sharing_candidate_cache<'a>(&'a self) -> &'a mut StyleSharingCandidateCache {
unsafe { unsafe {
let cached_context = &*self.cached_local_layout_context; let cached_context = &mut *self.cached_local_layout_context;
mem::transmute(&cached_context.style_sharing_candidate_cache) &mut cached_context.style_sharing_candidate_cache
} }
} }
} }

View file

@ -55,13 +55,9 @@ pub struct ApplicableDeclarationsCacheEntry {
} }
impl ApplicableDeclarationsCacheEntry { impl ApplicableDeclarationsCacheEntry {
fn new(slice: &[DeclarationBlock]) -> ApplicableDeclarationsCacheEntry { fn new(declarations: Vec<DeclarationBlock>) -> ApplicableDeclarationsCacheEntry {
let mut entry_declarations = Vec::new();
for declarations in slice.iter() {
entry_declarations.push(declarations.clone());
}
ApplicableDeclarationsCacheEntry { ApplicableDeclarationsCacheEntry {
declarations: entry_declarations, declarations: declarations,
} }
} }
} }
@ -138,7 +134,7 @@ impl ApplicableDeclarationsCache {
} }
} }
fn insert(&mut self, declarations: &[DeclarationBlock], style: Arc<ComputedValues>) { fn insert(&mut self, declarations: Vec<DeclarationBlock>, style: Arc<ComputedValues>) {
self.cache.insert(ApplicableDeclarationsCacheEntry::new(declarations), style) self.cache.insert(ApplicableDeclarationsCacheEntry::new(declarations), style)
} }
} }
@ -438,7 +434,7 @@ impl<'ln> PrivateMatchMethods for LayoutNode<'ln> {
// Cache the resolved style if it was cacheable. // Cache the resolved style if it was cacheable.
if cacheable { if cacheable {
applicable_declarations_cache.insert(applicable_declarations, this_style.clone()); applicable_declarations_cache.insert(applicable_declarations.to_vec(), this_style.clone());
} }
// Calculate style difference and write. // Calculate style difference and write.