diff options
-rw-r--r-- | components/layout/fragment.rs | 4 | ||||
-rw-r--r-- | components/layout/inline.rs | 6 | ||||
-rw-r--r-- | components/style/lib.rs | 10 | ||||
-rw-r--r-- | components/style/matching.rs | 2 | ||||
-rw-r--r-- | components/util/lib.rs | 10 | ||||
-rw-r--r-- | ports/geckolib/glue.rs | 2 |
6 files changed, 17 insertions, 17 deletions
diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 8092985f401..5d101ffc4d2 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -37,6 +37,7 @@ use std::cmp::{max, min}; use std::collections::LinkedList; use std::fmt; use std::sync::{Arc, Mutex}; +use style::arc_ptr_eq; use style::computed_values::content::ContentItem; use style::computed_values::{border_collapse, clear, color, display, mix_blend_mode}; use style::computed_values::{overflow_wrap, overflow_x, position, text_decoration}; @@ -50,7 +51,6 @@ use style::values::computed::{LengthOrPercentage, LengthOrPercentageOrAuto}; use text; use text::TextRunScanner; use url::Url; -use util; /// Fragments (`struct Fragment`) are the leaves of the layout tree. They cannot position /// themselves. In general, fragments do not have a simple correspondence with CSS fragments in the @@ -1732,7 +1732,7 @@ impl Fragment { match (&mut self.specific, &next_fragment.specific) { (&mut SpecificFragmentInfo::ScannedText(ref mut this_info), &SpecificFragmentInfo::ScannedText(ref other_info)) => { - debug_assert!(util::arc_ptr_eq(&this_info.run, &other_info.run)); + debug_assert!(arc_ptr_eq(&this_info.run, &other_info.run)); this_info.range_end_including_stripped_whitespace = other_info.range_end_including_stripped_whitespace; if other_info.requires_line_break_afterward_if_wrapping_on_newlines() { diff --git a/components/layout/inline.rs b/components/layout/inline.rs index 5d7cbffb970..42dd01d87b9 100644 --- a/components/layout/inline.rs +++ b/components/layout/inline.rs @@ -32,6 +32,7 @@ use std::cmp::max; use std::collections::VecDeque; use std::sync::Arc; use std::{fmt, i32, isize, mem}; +use style::arc_ptr_eq; use style::computed_values::{display, overflow_x, position, text_align, text_justify}; use style::computed_values::{text_overflow, vertical_align, white_space}; use style::context::StyleContext; @@ -41,7 +42,6 @@ use style::servo::SharedStyleContext; use style::values::computed::LengthOrPercentage; use text; use unicode_bidi; -use util; // From gfxFontConstants.h in Firefox static FONT_SUBSCRIPT_OFFSET_RATIO: f32 = 0.20; @@ -360,7 +360,7 @@ impl LineBreaker { (&mut SpecificFragmentInfo::ScannedText(ref mut result_info), &SpecificFragmentInfo::ScannedText(ref candidate_info)) => { result_info.selected() == candidate_info.selected() && - util::arc_ptr_eq(&result_info.run, &candidate_info.run) && + arc_ptr_eq(&result_info.run, &candidate_info.run) && inline_contexts_are_equal(&result.inline_context, &candidate.inline_context) } @@ -1780,7 +1780,7 @@ impl InlineFragmentContext { return false } for (this_node, other_node) in self.nodes.iter().zip(&other.nodes) { - if !util::arc_ptr_eq(&this_node.style, &other_node.style) { + if !arc_ptr_eq(&this_node.style, &other_node.style) { return false } } diff --git a/components/style/lib.rs b/components/style/lib.rs index 7fe5fe1bcca..d92524c8877 100644 --- a/components/style/lib.rs +++ b/components/style/lib.rs @@ -103,6 +103,8 @@ pub mod values; pub mod viewport; pub mod workqueue; +use std::sync::Arc; + /// The CSS properties supported by the style system. // Generated from the properties.mako.rs template by build.rs #[macro_use] @@ -126,3 +128,11 @@ macro_rules! reexport_computed_values { } } longhand_properties_idents!(reexport_computed_values); + +/// Returns whether the two arguments point to the same value. +#[inline] +pub fn arc_ptr_eq<T: 'static>(a: &Arc<T>, b: &Arc<T>) -> bool { + let a: &T = &**a; + let b: &T = &**b; + (a as *const T) == (b as *const T) +} diff --git a/components/style/matching.rs b/components/style/matching.rs index 8b843844fbc..251d46d70b6 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -7,6 +7,7 @@ #![allow(unsafe_code)] use animation::{self, Animation}; +use arc_ptr_eq; use cache::{LRUCache, SimpleHashCache}; use context::{StyleContext, SharedStyleContext}; use data::PrivateStyleData; @@ -25,7 +26,6 @@ use std::hash::{BuildHasherDefault, Hash, Hasher}; use std::slice::Iter; use std::sync::Arc; use string_cache::{Atom, Namespace}; -use util::arc_ptr_eq; use util::opts; fn create_common_style_affecting_attributes_from_element<E: TElement>(element: &E) diff --git a/components/util/lib.rs b/components/util/lib.rs index bcad9ea3705..2e57d5a5f4b 100644 --- a/components/util/lib.rs +++ b/components/util/lib.rs @@ -26,8 +26,6 @@ extern crate url; #[cfg(all(unix, not(target_os = "macos"), not(target_os = "ios"), not(target_os = "android")))] extern crate xdg; -use std::sync::Arc; - pub mod basedir; pub mod geometry; #[cfg(feature = "servo")] #[allow(unsafe_code)] pub mod ipc; @@ -38,14 +36,6 @@ pub mod resource_files; pub mod thread; pub mod thread_state; -// Workaround for lack of `ptr_eq` on Arcs... -#[inline] -pub fn arc_ptr_eq<T: 'static>(a: &Arc<T>, b: &Arc<T>) -> bool { - let a: &T = &**a; - let b: &T = &**b; - (a as *const T) == (b as *const T) -} - pub fn servo_version() -> &'static str { concat!("Servo ", env!("CARGO_PKG_VERSION"), env!("GIT_INFO")) } diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index f1650be83f6..32a0f6a6016 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -22,6 +22,7 @@ use std::ptr; use std::slice; use std::str::from_utf8_unchecked; use std::sync::{Arc, Mutex}; +use style::arc_ptr_eq; use style::context::{LocalStyleContextCreationInfo, ReflowGoal}; use style::dom::{TDocument, TElement, TNode}; use style::error_reporting::StdoutErrorReporter; @@ -33,7 +34,6 @@ use style::sequential; use style::stylesheets::Origin; use traversal::RecalcStyleOnly; use url::Url; -use util::arc_ptr_eq; use wrapper::{GeckoDocument, GeckoElement, GeckoNode, NonOpaqueStyleData}; // TODO: This is ugly and should go away once we get an atom back-end. |