diff --git a/Cargo.lock b/Cargo.lock index 7cad7427505..adf71b4b594 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1085,7 +1085,6 @@ name = "hashglobe" version = "0.1.0" dependencies = [ "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1555,7 +1554,6 @@ dependencies = [ "euclid 0.16.4 (registry+https://github.com/rust-lang/crates.io-index)", "hashglobe 0.1.0", "mozjs 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "selectors 0.19.0", "servo_arc 0.1.0", "smallbitvec 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2010,11 +2008,6 @@ dependencies = [ "unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "ordermap" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "osmesa-src" version = "17.3.1-devel" @@ -3676,7 +3669,6 @@ dependencies = [ "checksum openssl 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)" = "419ef26bb651d72b6c5a603bcc4e4856a362460e62352dfffa53de91d2e81181" "checksum openssl-sys 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5483bdc56756041ba6aa37c9cb59cc2219f012a2a1377d97ad35556ac6676ee7" "checksum ordered-float 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "da12c96037889ae0be29dd2bdd260e5a62a7df24e6466d5a15bb8131c1c200a8" -"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" "checksum osmesa-src 17.3.1-devel (git+https://github.com/servo/osmesa-src)" = "" "checksum osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" "checksum ovr-mobile-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7b5f9389b2015f8340f0566c488f3e96735e2e8fd7b85d571832cd274ac2998" diff --git a/components/hashglobe/Cargo.toml b/components/hashglobe/Cargo.toml index 6122b24ce80..6deb04a7531 100644 --- a/components/hashglobe/Cargo.toml +++ b/components/hashglobe/Cargo.toml @@ -11,7 +11,6 @@ readme = "README.md" [dependencies] libc = "0.2" -ordermap = "0.3" [dev-dependencies] rand = "0.3" diff --git a/components/hashglobe/src/lib.rs b/components/hashglobe/src/lib.rs index 22947bdff53..49038a51859 100644 --- a/components/hashglobe/src/lib.rs +++ b/components/hashglobe/src/lib.rs @@ -8,8 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -extern crate ordermap; - pub mod alloc; pub mod hash_map; pub mod hash_set; @@ -17,7 +15,6 @@ mod shim; mod table; pub mod fake; -pub mod order; use std::{error, fmt}; diff --git a/components/hashglobe/src/order.rs b/components/hashglobe/src/order.rs deleted file mode 100644 index eb75272164f..00000000000 --- a/components/hashglobe/src/order.rs +++ /dev/null @@ -1,246 +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/. */ - -//! This module contains shims around the ordermap crate that add fallible -//! methods. -//! -//! These methods are a lie. They are not actually fallible. This is just to -//! make it smooth to switch between hashmap impls the codebase. - -use ordermap::{OrderMap, OrderSet}; -use std::fmt; -use std::hash::{BuildHasher, Hash}; -use std::ops::{Deref, DerefMut}; - -pub use std::collections::hash_map::RandomState; -pub use ordermap::{Entry, Iter as MapIter, IterMut as MapIterMut}; -pub use ordermap::set::{Iter as SetIter, IntoIter as SetIntoIter}; - -#[derive(Clone)] -pub struct HashMap(OrderMap); - - -use FailedAllocationError; - -impl Deref for HashMap { - type Target = OrderMap; - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl DerefMut for HashMap { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } -} - -impl HashMap - where K: Eq + Hash, - S: BuildHasher -{ - #[inline] - pub fn try_with_hasher(hash_builder: S) -> Result, FailedAllocationError> { - Ok(HashMap(OrderMap::with_hasher(hash_builder))) - } - - #[inline] - pub fn try_with_capacity_and_hasher(capacity: usize, - hash_builder: S) - -> Result, FailedAllocationError> { - Ok(HashMap(OrderMap::with_capacity_and_hasher(capacity, hash_builder))) - } - - pub fn with_capacity_and_hasher(capacity: usize, hash_builder: S) -> HashMap { - HashMap(OrderMap::with_capacity_and_hasher(capacity, hash_builder)) - } - - - #[inline] - pub fn try_reserve(&mut self, additional: usize) -> Result<(), FailedAllocationError> { - Ok(self.reserve(additional)) - } - - #[inline] - pub fn try_entry(&mut self, key: K) -> Result, FailedAllocationError> { - Ok(self.entry(key)) - } - - #[inline] - pub fn try_insert(&mut self, k: K, v: V) -> Result, FailedAllocationError> { - Ok(self.insert(k, v)) - } -} - -#[derive(Clone)] -pub struct HashSet(OrderSet); - - -impl Deref for HashSet { - type Target = OrderSet; - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl DerefMut for HashSet { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } -} - -impl HashSet { - #[inline] - pub fn new() -> HashSet { - HashSet(OrderSet::new()) - } - - #[inline] - pub fn with_capacity(capacity: usize) -> HashSet { - HashSet(OrderSet::with_capacity(capacity)) - } -} - - -impl HashSet - where T: Eq + Hash, - S: BuildHasher -{ - #[inline] - pub fn with_hasher(hasher: S) -> HashSet { - HashSet(OrderSet::with_hasher(hasher)) - } - - - #[inline] - pub fn with_capacity_and_hasher(capacity: usize, hasher: S) -> HashSet { - HashSet(OrderSet::with_capacity_and_hasher(capacity, hasher)) - } - - #[inline] - pub fn try_reserve(&mut self, additional: usize) -> Result<(), FailedAllocationError> { - Ok(self.reserve(additional)) - } - - #[inline] - pub fn try_insert(&mut self, value: T) -> Result { - Ok(self.insert(value)) - } -} - -// Pass through trait impls -// We can't derive these since the bounds are not obvious to the derive macro - -impl Default for HashMap { - fn default() -> Self { - HashMap(Default::default()) - } -} - -impl fmt::Debug for HashMap - where K: Eq + Hash + fmt::Debug, - V: fmt::Debug, - S: BuildHasher { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - self.0.fmt(f) - } -} - -impl PartialEq for HashMap - where K: Eq + Hash, - V: PartialEq, - S: BuildHasher -{ - fn eq(&self, other: &HashMap) -> bool { - self.0.eq(&other.0) - } -} - -impl Eq for HashMap - where K: Eq + Hash, - V: Eq, - S: BuildHasher -{ -} - -impl<'a, K, V, S> IntoIterator for &'a HashMap - where K: Eq + Hash, - S: BuildHasher -{ - type Item = (&'a K, &'a V); - type IntoIter = MapIter<'a, K, V>; - - fn into_iter(self) -> MapIter<'a, K, V> { - self.0.iter() - } -} - -impl<'a, K, V, S> IntoIterator for &'a mut HashMap - where K: Eq + Hash, - S: BuildHasher -{ - type Item = (&'a K, &'a mut V); - type IntoIter = MapIterMut<'a, K, V>; - - fn into_iter(self) -> MapIterMut<'a, K, V> { - self.0.iter_mut() - } -} - -impl Default for HashSet { - fn default() -> Self { - HashSet(Default::default()) - } -} - -impl fmt::Debug for HashSet - where T: Eq + Hash + fmt::Debug, - S: BuildHasher -{ - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - self.0.fmt(f) - } -} - -impl PartialEq for HashSet - where T: Eq + Hash, - S: BuildHasher -{ - fn eq(&self, other: &HashSet) -> bool { - self.0.eq(&other.0) - } -} - -impl Eq for HashSet - where T: Eq + Hash, - S: BuildHasher -{ -} - -impl<'a, T, S> IntoIterator for &'a HashSet - where T: Eq + Hash, - S: BuildHasher -{ - type Item = &'a T; - type IntoIter = SetIter<'a, T>; - - fn into_iter(self) -> SetIter<'a, T> { - self.0.iter() - } -} - -impl IntoIterator for HashSet - where T: Eq + Hash, - S: BuildHasher -{ - type Item = T; - type IntoIter = SetIntoIter; - - - fn into_iter(self) -> SetIntoIter { - self.0.into_iter() - } -} - - diff --git a/components/malloc_size_of/Cargo.toml b/components/malloc_size_of/Cargo.toml index 2a4ab316f4b..8256a47c454 100644 --- a/components/malloc_size_of/Cargo.toml +++ b/components/malloc_size_of/Cargo.toml @@ -17,7 +17,6 @@ cssparser = "0.23.0" euclid = "0.16" hashglobe = { path = "../hashglobe" } mozjs = { version = "0.1.8", features = ["promises"], optional = true } -ordermap = "0.3" selectors = { path = "../selectors" } servo_arc = { path = "../servo_arc" } smallbitvec = "1.0.3" diff --git a/components/malloc_size_of/lib.rs b/components/malloc_size_of/lib.rs index 5e97a2709dc..1b351144179 100644 --- a/components/malloc_size_of/lib.rs +++ b/components/malloc_size_of/lib.rs @@ -49,7 +49,6 @@ extern crate euclid; extern crate hashglobe; #[cfg(feature = "servo")] extern crate mozjs as js; -extern crate ordermap; extern crate selectors; extern crate servo_arc; extern crate smallbitvec; @@ -412,33 +411,6 @@ impl MallocShallowSizeOf for hashglobe::hash_set::HashSet } } -impl MallocSizeOf for ordermap::OrderSet - where T: Eq + Hash + MallocSizeOf, - S: BuildHasher, -{ - fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize { - let mut n = self.shallow_size_of(ops); - for t in self.iter() { - n += t.size_of(ops); - } - n - } -} - -impl MallocShallowSizeOf for ordermap::OrderSet - where T: Eq + Hash, - S: BuildHasher -{ - fn shallow_size_of(&self, ops: &mut MallocSizeOfOps) -> usize { - // See the implementation for std::collections::HashSet for details. - if ops.has_malloc_enclosing_size_of() { - self.iter().next().map_or(0, |t| unsafe { ops.malloc_enclosing_size_of(t) }) - } else { - self.capacity() * (size_of::() + size_of::()) - } - } -} - impl MallocSizeOf for hashglobe::hash_set::HashSet where T: Eq + Hash + MallocSizeOf, S: BuildHasher, @@ -472,26 +444,6 @@ impl MallocSizeOf for hashglobe::fake::HashSet } } -impl MallocShallowSizeOf for hashglobe::order::HashSet - where T: Eq + Hash, - S: BuildHasher, -{ - fn shallow_size_of(&self, ops: &mut MallocSizeOfOps) -> usize { - use std::ops::Deref; - self.deref().shallow_size_of(ops) - } -} - -impl MallocSizeOf for hashglobe::order::HashSet - where T: Eq + Hash + MallocSizeOf, - S: BuildHasher, -{ - fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize { - use std::ops::Deref; - self.deref().size_of(ops) - } -} - impl MallocShallowSizeOf for std::collections::HashMap where K: Eq + Hash, S: BuildHasher @@ -521,35 +473,6 @@ impl MallocSizeOf for std::collections::HashMap } } -impl MallocShallowSizeOf for ordermap::OrderMap - where K: Eq + Hash, - S: BuildHasher -{ - fn shallow_size_of(&self, ops: &mut MallocSizeOfOps) -> usize { - // See the implementation for std::collections::HashSet for details. - if ops.has_malloc_enclosing_size_of() { - self.values().next().map_or(0, |v| unsafe { ops.malloc_enclosing_size_of(v) }) - } else { - self.capacity() * (size_of::() + size_of::() + size_of::()) - } - } -} - -impl MallocSizeOf for ordermap::OrderMap - where K: Eq + Hash + MallocSizeOf, - V: MallocSizeOf, - S: BuildHasher, -{ - fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize { - let mut n = self.shallow_size_of(ops); - for (k, v) in self.iter() { - n += k.size_of(ops); - n += v.size_of(ops); - } - n - } -} - impl MallocShallowSizeOf for hashglobe::hash_map::HashMap where K: Eq + Hash, S: BuildHasher @@ -600,27 +523,6 @@ impl MallocSizeOf for hashglobe::fake::HashMap } } -impl MallocShallowSizeOf for hashglobe::order::HashMap - where K: Eq + Hash, - S: BuildHasher, -{ - fn shallow_size_of(&self, ops: &mut MallocSizeOfOps) -> usize { - use std::ops::Deref; - self.deref().shallow_size_of(ops) - } -} - -impl MallocSizeOf for hashglobe::order::HashMap - where K: Eq + Hash + MallocSizeOf, - V: MallocSizeOf, - S: BuildHasher, -{ - fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize { - use std::ops::Deref; - self.deref().size_of(ops) - } -} - // PhantomData is always 0. impl MallocSizeOf for std::marker::PhantomData { fn size_of(&self, _ops: &mut MallocSizeOfOps) -> usize { diff --git a/components/style/hash.rs b/components/style/hash.rs index 3a2d95404a1..135e5ff99b6 100644 --- a/components/style/hash.rs +++ b/components/style/hash.rs @@ -9,15 +9,10 @@ use fnv; -// #[cfg(feature = "gecko")] -// pub use hashglobe::hash_map::HashMap; -// #[cfg(feature = "gecko")] -// pub use hashglobe::hash_set::HashSet; #[cfg(feature = "gecko")] -pub use hashglobe::order::HashMap; +pub use hashglobe::hash_map::HashMap; #[cfg(feature = "gecko")] -pub use hashglobe::order::HashSet; - +pub use hashglobe::hash_set::HashSet; #[cfg(feature = "servo")] pub use hashglobe::fake::{HashMap, HashSet}; @@ -25,10 +20,8 @@ pub use hashglobe::fake::{HashMap, HashSet}; /// Appropriate reexports of hash_map types pub mod map { - // #[cfg(feature = "gecko")] - // pub use hashglobe::hash_map::{Entry, Iter}; #[cfg(feature = "gecko")] - pub use hashglobe::order::{Entry, MapIter as Iter}; + pub use hashglobe::hash_map::{Entry, Iter}; #[cfg(feature = "servo")] pub use std::collections::hash_map::{Entry, Iter}; } diff --git a/components/style/selector_map.rs b/components/style/selector_map.rs index e9ed6ce3536..b10a54f8124 100644 --- a/components/style/selector_map.rs +++ b/components/style/selector_map.rs @@ -513,7 +513,6 @@ impl MaybeCaseInsensitiveHashMap { } /// HashMap::try_entry - #[cfg(not(feature = "gecko"))] pub fn try_entry( &mut self, mut key: Atom, @@ -525,22 +524,6 @@ impl MaybeCaseInsensitiveHashMap { self.0.try_entry(key) } - /// HashMap::try_entry - /// - /// FIXME(emilio): Remove the extra Entry parameter and unify when ordermap - /// 0.4 is released. - #[cfg(feature = "gecko")] - pub fn try_entry( - &mut self, - mut key: Atom, - quirks_mode: QuirksMode, - ) -> Result>, FailedAllocationError> { - if quirks_mode == QuirksMode::Quirks { - key = key.to_ascii_lowercase() - } - self.0.try_entry(key) - } - /// HashMap::iter pub fn iter(&self) -> hash_map::Iter { self.0.iter()