mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 21:01:08 +00:00
Bug 1716518 - Upgrade rustc-hash to v1.1.0.
Differential Revision: https://phabricator.services.mozilla.com/D117848 Depends on D117847
This commit is contained in:
parent
4420c3c09d
commit
8774126633
7
Cargo.lock
generated
7
Cargo.lock
generated
@ -4397,12 +4397,9 @@ checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-hash"
|
||||
version = "1.0.1"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
]
|
||||
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
||||
|
||||
[[package]]
|
||||
name = "rustc_version"
|
||||
|
@ -1 +1 @@
|
||||
{"files":{"CODE_OF_CONDUCT.md":"edca092fde496419a9f1ba640048aa0270b62dfea576cd3175f0b53e3c230470","Cargo.toml":"5bb0914fd92b42e6b7f032bfc4dd238979e5c7e505c7b5e5530c11ab441ad941","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"f2e2a279de9cc138952f50954ea95b17f567ac21c3ae1dbcaa12a21f48dbbf31","src/lib.rs":"91e3e3cf488d5ddffaa935996575750837a1acc636d0d747f7127e5e71f458fd"},"package":"7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8"}
|
||||
{"files":{"CODE_OF_CONDUCT.md":"edca092fde496419a9f1ba640048aa0270b62dfea576cd3175f0b53e3c230470","Cargo.toml":"647814b27b6fc4fbef1df70d796b53b723e776b68467372044e4182763007379","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"cac8197ac869d64a6efc26cab883a269392ae6db51f7453bca722f8f31d67c7c","src/lib.rs":"ddecafb5db609d0d8eebd19e4d98dc865e7e9282a4183421f9bd765c01a231c0"},"package":"08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"}
|
10
third_party/rust/rustc-hash/Cargo.toml
vendored
10
third_party/rust/rustc-hash/Cargo.toml
vendored
@ -3,7 +3,7 @@
|
||||
# When uploading crates to the registry Cargo will automatically
|
||||
# "normalize" Cargo.toml files for maximal compatibility
|
||||
# with all versions of Cargo and also rewrite `path` dependencies
|
||||
# to registry (e.g. crates.io) dependencies
|
||||
# to registry (e.g., crates.io) dependencies
|
||||
#
|
||||
# If you believe there's an error in this file please file an
|
||||
# issue against the rust-lang/cargo repository. If you're
|
||||
@ -12,12 +12,14 @@
|
||||
|
||||
[package]
|
||||
name = "rustc-hash"
|
||||
version = "1.0.1"
|
||||
version = "1.1.0"
|
||||
authors = ["The Rust Project Developers"]
|
||||
description = "speed, non-cryptographic hash used in rustc"
|
||||
readme = "README.md"
|
||||
keywords = ["hash", "fxhash", "rustc"]
|
||||
license = "Apache-2.0/MIT"
|
||||
repository = "https://github.com/rust-lang-nursery/rustc-hash"
|
||||
[dependencies.byteorder]
|
||||
version = "1.1"
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
std = []
|
||||
|
21
third_party/rust/rustc-hash/README.md
vendored
21
third_party/rust/rustc-hash/README.md
vendored
@ -1,5 +1,8 @@
|
||||
# rustc-hash
|
||||
|
||||
[![crates.io](https://img.shields.io/crates/v/rustc-hash.svg)](https://crates.io/crates/rustc-hash)
|
||||
[![Documentation](https://docs.rs/rustc-hash/badge.svg)](https://docs.rs/rustc-hash)
|
||||
|
||||
A speedy hash algorithm used within rustc. The hashmap in liballoc by
|
||||
default uses SipHash which isn't quite as speedy as we want. In the
|
||||
compiler we're not really worried about DOS attempts, so we use a fast
|
||||
@ -15,7 +18,21 @@ works on up to 8 bytes at a time.
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
```rust
|
||||
use rustc_hash::FxHashMap;
|
||||
let map: FxHashMap<u32, u32> = FxHashMap::default();
|
||||
|
||||
let mut map: FxHashMap<u32, u32> = FxHashMap::default();
|
||||
map.insert(22, 44);
|
||||
```
|
||||
|
||||
### `no_std`
|
||||
|
||||
This crate can be used as a `no_std` crate by disabling the `std`
|
||||
feature, which is on by default, as follows:
|
||||
|
||||
```toml
|
||||
rustc-hash = { version = "1.0", default-features = false }
|
||||
```
|
||||
|
||||
In this configuration, `FxHasher` is the only export, and the
|
||||
`FxHashMap`/`FxHashSet` type aliases are omitted.
|
||||
|
36
third_party/rust/rustc-hash/src/lib.rs
vendored
36
third_party/rust/rustc-hash/src/lib.rs
vendored
@ -13,25 +13,37 @@
|
||||
//! # Example
|
||||
//!
|
||||
//! ```rust
|
||||
//! # #[cfg(feature = "std")]
|
||||
//! # fn main() {
|
||||
//! use rustc_hash::FxHashMap;
|
||||
//! let mut map: FxHashMap<u32, u32> = FxHashMap::default();
|
||||
//! map.insert(22, 44);
|
||||
//! # }
|
||||
//! # #[cfg(not(feature = "std"))]
|
||||
//! # fn main() { }
|
||||
//! ```
|
||||
|
||||
extern crate byteorder;
|
||||
#![no_std]
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
extern crate std;
|
||||
|
||||
use core::convert::TryInto;
|
||||
use core::default::Default;
|
||||
#[cfg(feature = "std")]
|
||||
use core::hash::BuildHasherDefault;
|
||||
use core::hash::Hasher;
|
||||
use core::mem::size_of;
|
||||
use core::ops::BitXor;
|
||||
#[cfg(feature = "std")]
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::default::Default;
|
||||
use std::hash::{Hasher, BuildHasherDefault};
|
||||
use std::ops::BitXor;
|
||||
use std::mem::size_of;
|
||||
|
||||
use byteorder::{ByteOrder, NativeEndian};
|
||||
|
||||
/// Type alias for a hashmap using the `fx` hash algorithm.
|
||||
#[cfg(feature = "std")]
|
||||
pub type FxHashMap<K, V> = HashMap<K, V, BuildHasherDefault<FxHasher>>;
|
||||
|
||||
/// Type alias for a hashmap using the `fx` hash algorithm.
|
||||
#[cfg(feature = "std")]
|
||||
pub type FxHashSet<V> = HashSet<V, BuildHasherDefault<FxHasher>>;
|
||||
|
||||
/// A speedy hash algorithm for use within rustc. The hashmap in liballoc
|
||||
@ -46,7 +58,7 @@ pub type FxHashSet<V> = HashSet<V, BuildHasherDefault<FxHasher>>;
|
||||
/// similar or slightly worse than FNV, but the speed of the hash function
|
||||
/// itself is much higher because it works on up to 8 bytes at a time.
|
||||
pub struct FxHasher {
|
||||
hash: usize
|
||||
hash: usize,
|
||||
}
|
||||
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
@ -72,9 +84,9 @@ impl Hasher for FxHasher {
|
||||
#[inline]
|
||||
fn write(&mut self, mut bytes: &[u8]) {
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
let read_usize = |bytes| NativeEndian::read_u32(bytes);
|
||||
let read_usize = |bytes: &[u8]| u32::from_ne_bytes(bytes[..4].try_into().unwrap());
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
let read_usize = |bytes| NativeEndian::read_u64(bytes);
|
||||
let read_usize = |bytes: &[u8]| u64::from_ne_bytes(bytes[..8].try_into().unwrap());
|
||||
|
||||
let mut hash = FxHasher { hash: self.hash };
|
||||
assert!(size_of::<usize>() <= 8);
|
||||
@ -83,11 +95,11 @@ impl Hasher for FxHasher {
|
||||
bytes = &bytes[size_of::<usize>()..];
|
||||
}
|
||||
if (size_of::<usize>() > 4) && (bytes.len() >= 4) {
|
||||
hash.add_to_hash(NativeEndian::read_u32(bytes) as usize);
|
||||
hash.add_to_hash(u32::from_ne_bytes(bytes[..4].try_into().unwrap()) as usize);
|
||||
bytes = &bytes[4..];
|
||||
}
|
||||
if (size_of::<usize>() > 2) && bytes.len() >= 2 {
|
||||
hash.add_to_hash(NativeEndian::read_u16(bytes) as usize);
|
||||
hash.add_to_hash(u16::from_ne_bytes(bytes[..2].try_into().unwrap()) as usize);
|
||||
bytes = &bytes[2..];
|
||||
}
|
||||
if (size_of::<usize>() > 1) && bytes.len() >= 1 {
|
||||
|
Loading…
Reference in New Issue
Block a user