diff --git a/Cargo.lock b/Cargo.lock index fb1e0982b0b..38cc0d66814 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3019,6 +3019,11 @@ name = "slab" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "smallbitvec" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "smallvec" version = "0.4.3" @@ -3077,7 +3082,6 @@ dependencies = [ "arrayvec 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", "atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "bindgen 0.29.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bit-vec 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3112,6 +3116,7 @@ dependencies = [ "servo_atoms 0.0.1", "servo_config 0.0.1", "servo_url 0.0.1", + "smallbitvec 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "style_derive 0.0.1", "style_traits 0.0.1", @@ -3948,6 +3953,7 @@ dependencies = [ "checksum siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0df90a788073e8d0235a67e50441d47db7c8ad9debd91cbf43736a2a92d36537" "checksum skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dd7d8dc1315094150052d0ab767840376335a98ac66ef313ff911cdf439a5b69" "checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" +"checksum smallbitvec 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c1ebf4681dc284c22efb7248986bbdf8aa23c2749ea85a0107e0e787038d303e" "checksum smallvec 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8fcd03faf178110ab0334d74ca9631d77f94c8c11cc77fcb59538abf0025695d" "checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b" "checksum string_cache 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "413fc7852aeeb5472f1986ef755f561ddf0c789d3d796e65f0b6fe293ecd4ef8" diff --git a/components/style/Cargo.toml b/components/style/Cargo.toml index b97002f3c4d..11a88398c6f 100644 --- a/components/style/Cargo.toml +++ b/components/style/Cargo.toml @@ -34,7 +34,6 @@ arrayvec = "0.3.20" arraydeque = "0.2.3" atomic_refcell = "0.1" bitflags = "0.7" -bit-vec = "0.4.3" byteorder = "1.0" cfg-if = "0.1.0" cssparser = "0.20" @@ -65,6 +64,7 @@ serde = {version = "1.0", optional = true, features = ["derive"]} servo_arc = { path = "../servo_arc" } servo_atoms = {path = "../atoms", optional = true} servo_config = {path = "../config", optional = true} +smallbitvec = "1.0" smallvec = "0.4" style_derive = {path = "../style_derive"} style_traits = {path = "../style_traits"} diff --git a/components/style/lib.rs b/components/style/lib.rs index e70a92d5bbc..f88f805a624 100644 --- a/components/style/lib.rs +++ b/components/style/lib.rs @@ -40,7 +40,6 @@ extern crate app_units; extern crate arrayvec; extern crate atomic_refcell; -extern crate bit_vec; #[macro_use] extern crate bitflags; #[allow(unused_extern_crates)] extern crate byteorder; @@ -80,6 +79,7 @@ pub extern crate servo_arc; #[cfg(feature = "servo")] #[macro_use] extern crate servo_atoms; #[cfg(feature = "servo")] extern crate servo_config; #[cfg(feature = "servo")] extern crate servo_url; +extern crate smallbitvec; extern crate smallvec; #[macro_use] extern crate style_derive; diff --git a/components/style/sharing/mod.rs b/components/style/sharing/mod.rs index 739ff6b90c6..bf81915ce47 100644 --- a/components/style/sharing/mod.rs +++ b/components/style/sharing/mod.rs @@ -67,7 +67,6 @@ use Atom; use applicable_declarations::ApplicableDeclarationBlock; use atomic_refcell::{AtomicRefCell, AtomicRefMut}; -use bit_vec::BitVec; use bloom::StyleBloom; use cache::{LRUCache, LRUCacheMutIterator}; use context::{SelectorFlagsMap, SharedStyleContext, StyleContext}; @@ -78,6 +77,7 @@ use owning_ref::OwningHandle; use properties::ComputedValues; use selectors::matching::{ElementSelectorFlags, VisitedHandlingMode}; use servo_arc::Arc; +use smallbitvec::SmallBitVec; use smallvec::SmallVec; use std::marker::PhantomData; use std::mem; @@ -123,7 +123,7 @@ pub struct ValidationData { /// The cached result of matching this entry against the revalidation /// selectors. - revalidation_match_results: Option, + revalidation_match_results: Option, } impl ValidationData { @@ -177,7 +177,7 @@ impl ValidationData { bloom: &StyleBloom, bloom_known_valid: bool, flags_setter: &mut F - ) -> &BitVec + ) -> &SmallBitVec where E: TElement, F: FnMut(&E, ElementSelectorFlags), { @@ -256,7 +256,7 @@ impl StyleSharingCandidate { &mut self, stylist: &Stylist, bloom: &StyleBloom, - ) -> &BitVec { + ) -> &SmallBitVec { self.validation_data.revalidation_match_results( self.element, stylist, @@ -309,7 +309,7 @@ impl StyleSharingTarget { stylist: &Stylist, bloom: &StyleBloom, selector_flags_map: &mut SelectorFlagsMap - ) -> &BitVec { + ) -> &SmallBitVec { // It's important to set the selector flags. Otherwise, if we succeed in // sharing the style, we may not set the slow selector flags for the // right elements (which may not necessarily be |element|), causing diff --git a/components/style/stylist.rs b/components/style/stylist.rs index 46747c182b9..d92c52db6af 100644 --- a/components/style/stylist.rs +++ b/components/style/stylist.rs @@ -6,7 +6,6 @@ use {Atom, LocalName, Namespace}; use applicable_declarations::{ApplicableDeclarationBlock, ApplicableDeclarationList}; -use bit_vec::BitVec; use context::{CascadeInputs, QuirksMode}; use dom::TElement; use element_state::ElementState; @@ -34,6 +33,7 @@ use selectors::sink::Push; use selectors::visitor::SelectorVisitor; use servo_arc::{Arc, ArcBorrow}; use shared_lock::{Locked, SharedRwLockReadGuard, StylesheetGuards}; +use smallbitvec::SmallBitVec; use smallvec::VecLike; use std::fmt::Debug; use std::ops; @@ -1493,7 +1493,7 @@ impl Stylist { element: &E, bloom: Option<&BloomFilter>, flags_setter: &mut F - ) -> BitVec + ) -> SmallBitVec where E: TElement, F: FnMut(&E, ElementSelectorFlags), @@ -1508,7 +1508,7 @@ impl Stylist { // This means we're guaranteed to get the same rulehash buckets for all // the lookups, which means that the bitvecs are comparable. We verify // this in the caller by asserting that the bitvecs are same-length. - let mut results = BitVec::new(); + let mut results = SmallBitVec::new(); for (data, _) in self.cascade_data.iter_origins() { data.selectors_for_cache_revalidation.lookup( *element,