Skip to content

Commit

Permalink
Auto merge of rust-lang#17954 - Noratrieb:rustc-blazing-hash, r=Veykril
Browse files Browse the repository at this point in the history
Update rustc-hash to version 2

This brings in the new optimized algorithm that was shown to have small performance benefits for rustc. I haven't run the rust-analyzer benchmarks.

See rust-lang/rustc-hash#37.
  • Loading branch information
bors committed Oct 21, 2024
2 parents f21a01f + 2adc6c3 commit 941c443
Show file tree
Hide file tree
Showing 13 changed files with 227 additions and 218 deletions.
54 changes: 30 additions & 24 deletions src/tools/rust-analyzer/Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ dependencies = [
"intern",
"la-arena 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lz4_flex",
"rustc-hash",
"rustc-hash 2.0.0",
"salsa",
"semver",
"span",
Expand Down Expand Up @@ -161,7 +161,7 @@ dependencies = [
"expect-test",
"intern",
"oorandom",
"rustc-hash",
"rustc-hash 2.0.0",
"syntax",
"syntax-bridge",
"tt",
Expand Down Expand Up @@ -216,7 +216,7 @@ dependencies = [
"chalk-derive",
"chalk-ir",
"chalk-solve",
"rustc-hash",
"rustc-hash 1.1.0",
"tracing",
]

Expand All @@ -232,7 +232,7 @@ dependencies = [
"indexmap",
"itertools",
"petgraph",
"rustc-hash",
"rustc-hash 1.1.0",
"tracing",
]

Expand Down Expand Up @@ -513,7 +513,7 @@ dependencies = [
"hir-ty",
"intern",
"itertools",
"rustc-hash",
"rustc-hash 2.0.0",
"smallvec",
"span",
"stdx",
Expand Down Expand Up @@ -547,7 +547,7 @@ dependencies = [
"mbe",
"ra-ap-rustc_abi",
"ra-ap-rustc_parse_format",
"rustc-hash",
"rustc-hash 2.0.0",
"rustc_apfloat",
"smallvec",
"span",
Expand Down Expand Up @@ -577,7 +577,7 @@ dependencies = [
"limit",
"mbe",
"parser",
"rustc-hash",
"rustc-hash 2.0.0",
"smallvec",
"span",
"stdx",
Expand Down Expand Up @@ -616,7 +616,7 @@ dependencies = [
"ra-ap-rustc_abi",
"ra-ap-rustc_index",
"ra-ap-rustc_pattern_analysis",
"rustc-hash",
"rustc-hash 2.0.0",
"rustc_apfloat",
"scoped-tls",
"smallvec",
Expand Down Expand Up @@ -737,7 +737,7 @@ dependencies = [
"parser",
"profile",
"rayon",
"rustc-hash",
"rustc-hash 2.0.0",
"span",
"stdx",
"syntax",
Expand Down Expand Up @@ -834,7 +834,7 @@ version = "0.0.0"
dependencies = [
"dashmap",
"hashbrown",
"rustc-hash",
"rustc-hash 2.0.0",
"sptr",
"triomphe",
]
Expand Down Expand Up @@ -1051,7 +1051,7 @@ dependencies = [
"intern",
"parser",
"ra-ap-rustc_lexer",
"rustc-hash",
"rustc-hash 2.0.0",
"smallvec",
"span",
"stdx",
Expand Down Expand Up @@ -1345,7 +1345,7 @@ dependencies = [
"indexmap",
"intern",
"paths",
"rustc-hash",
"rustc-hash 2.0.0",
"serde",
"serde_json",
"span",
Expand Down Expand Up @@ -1435,7 +1435,7 @@ dependencies = [
"itertools",
"la-arena 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"paths",
"rustc-hash",
"rustc-hash 2.0.0",
"semver",
"serde",
"serde_json",
Expand Down Expand Up @@ -1555,7 +1555,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "273d5f72926a58c7eea27aebc898d1d5b32d23d2342f692a94a2cf8746aa4a2f"
dependencies = [
"ra-ap-rustc_index",
"rustc-hash",
"rustc-hash 1.1.0",
"rustc_apfloat",
"smallvec",
"tracing",
Expand Down Expand Up @@ -1640,7 +1640,7 @@ dependencies = [
"countme",
"hashbrown",
"memoffset",
"rustc-hash",
"rustc-hash 1.1.0",
"text-size",
]

Expand Down Expand Up @@ -1680,7 +1680,7 @@ dependencies = [
"profile",
"project-model",
"rayon",
"rustc-hash",
"rustc-hash 2.0.0",
"scip",
"semver",
"serde",
Expand Down Expand Up @@ -1717,6 +1717,12 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"

[[package]]
name = "rustc-hash"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"

[[package]]
name = "rustc_apfloat"
version = "0.2.1+llvm-462a31f5a5ab"
Expand Down Expand Up @@ -1746,7 +1752,7 @@ dependencies = [
"oorandom",
"parking_lot",
"rand",
"rustc-hash",
"rustc-hash 2.0.0",
"salsa-macros",
"smallvec",
"tracing",
Expand Down Expand Up @@ -1898,7 +1904,7 @@ version = "0.0.0"
dependencies = [
"hashbrown",
"la-arena 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-hash",
"rustc-hash 2.0.0",
"salsa",
"stdx",
"syntax",
Expand Down Expand Up @@ -1967,7 +1973,7 @@ dependencies = [
"ra-ap-rustc_lexer",
"rayon",
"rowan",
"rustc-hash",
"rustc-hash 2.0.0",
"rustc_apfloat",
"smol_str",
"stdx",
Expand All @@ -1983,7 +1989,7 @@ version = "0.0.0"
dependencies = [
"intern",
"parser",
"rustc-hash",
"rustc-hash 2.0.0",
"span",
"stdx",
"syntax",
Expand All @@ -2000,7 +2006,7 @@ dependencies = [
"cfg",
"hir-expand",
"intern",
"rustc-hash",
"rustc-hash 2.0.0",
"span",
"stdx",
"test-utils",
Expand All @@ -2014,7 +2020,7 @@ dependencies = [
"dissimilar",
"paths",
"profile",
"rustc-hash",
"rustc-hash 2.0.0",
"stdx",
"text-size",
"tracing",
Expand Down Expand Up @@ -2361,7 +2367,7 @@ dependencies = [
"indexmap",
"nohash-hasher",
"paths",
"rustc-hash",
"rustc-hash 2.0.0",
"stdx",
"tracing",
]
Expand All @@ -2374,7 +2380,7 @@ dependencies = [
"notify",
"paths",
"rayon",
"rustc-hash",
"rustc-hash 2.0.0",
"stdx",
"tracing",
"vfs",
Expand Down
2 changes: 1 addition & 1 deletion src/tools/rust-analyzer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ process-wrap = { version = "8.0.2", features = ["std"] }
pulldown-cmark-to-cmark = "10.0.4"
pulldown-cmark = { version = "0.9.0", default-features = false }
rayon = "1.8.0"
rustc-hash = "1.1.0"
rustc-hash = "2.0.0"
semver = "1.0.14"
serde = { version = "1.0.192", features = ["derive"] }
serde_json = "1.0.108"
Expand Down
7 changes: 4 additions & 3 deletions src/tools/rust-analyzer/crates/hir-ty/src/consteval/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,8 @@ fn check_answer(ra_fixture: &str, check: impl FnOnce(&[u8], &MemoryMap)) {
fn pretty_print_err(e: ConstEvalError, db: TestDB) -> String {
let mut err = String::new();
let span_formatter = |file, range| format!("{file:?} {range:?}");
let edition = db.crate_graph()[db.test_crate()].edition;
let edition =
db.crate_graph()[*db.crate_graph().crates_in_topological_order().last().unwrap()].edition;
match e {
ConstEvalError::MirLowerError(e) => e.pretty_print(&mut err, &db, span_formatter, edition),
ConstEvalError::MirEvalError(e) => e.pretty_print(&mut err, &db, span_formatter, edition),
Expand Down Expand Up @@ -2896,7 +2897,7 @@ fn recursive_adt() {
{
const VARIANT_TAG_TREE: TagTree = TagTree::Choice(
&[
TagTree::Leaf,
TAG_TREE,
],
);
VARIANT_TAG_TREE
Expand All @@ -2905,6 +2906,6 @@ fn recursive_adt() {
TAG_TREE
};
"#,
|e| matches!(e, ConstEvalError::MirEvalError(MirEvalError::StackOverflow)),
|e| matches!(e, ConstEvalError::MirLowerError(MirLowerError::Loop)),
);
}
12 changes: 5 additions & 7 deletions src/tools/rust-analyzer/crates/hir-ty/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,7 @@ mod test_db;
#[cfg(test)]
mod tests;

use std::{
collections::hash_map::Entry,
hash::{BuildHasherDefault, Hash},
};
use std::hash::Hash;

use base_db::ra_salsa::InternValueTrivial;
use chalk_ir::{
Expand All @@ -65,10 +62,11 @@ use chalk_ir::{
use either::Either;
use hir_def::{hir::ExprId, type_ref::Rawness, CallableDefId, GeneralConstId, TypeOrConstParamId};
use hir_expand::name::Name;
use indexmap::{map::Entry, IndexMap};
use intern::{sym, Symbol};
use la_arena::{Arena, Idx};
use mir::{MirEvalError, VTableMap};
use rustc_hash::{FxHashMap, FxHashSet};
use rustc_hash::{FxBuildHasher, FxHashMap, FxHashSet};
use span::Edition;
use syntax::ast::{make, ConstArg};
use traits::FnTrait;
Expand Down Expand Up @@ -199,7 +197,7 @@ pub enum MemoryMap {

#[derive(Debug, Default, Clone, PartialEq, Eq)]
pub struct ComplexMemoryMap {
memory: FxHashMap<usize, Box<[u8]>>,
memory: IndexMap<usize, Box<[u8]>, FxBuildHasher>,
vtable: VTableMap,
}

Expand Down Expand Up @@ -245,7 +243,7 @@ impl MemoryMap {
match self {
MemoryMap::Empty => Ok(Default::default()),
MemoryMap::Simple(m) => transform((&0, m)).map(|(addr, val)| {
let mut map = FxHashMap::with_capacity_and_hasher(1, BuildHasherDefault::default());
let mut map = FxHashMap::with_capacity_and_hasher(1, rustc_hash::FxBuildHasher);
map.insert(addr, val);
map
}),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1095,6 +1095,7 @@ fn main() {

#[test]
fn field_enum_cross_file() {
// FIXME: The import is missing
check_assist(
bool_to_enum,
r#"
Expand Down Expand Up @@ -1132,7 +1133,7 @@ fn foo() {
}
//- /main.rs
use foo::{Bool, Foo};
use foo::Foo;
mod foo;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1853,8 +1853,8 @@ fn f() { A { bar: b$0 }; }
expect![[r#"
fn bar() [type+name]
fn baz() [type]
ex baz() [type]
ex bar() [type]
ex baz() [type]
st A []
fn f() []
"#]],
Expand Down
Loading

0 comments on commit 941c443

Please sign in to comment.