diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-05-21 14:49:18 +0100 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-05-21 14:49:18 +0100 |
commit | c6a5d871d7a670473a78e03852bb158f3b6d5be3 (patch) | |
tree | b3cacd977876023e045f80c20315941ed0ea6bab /crates | |
parent | 9fe8e561772a883ad65962b6f584fafe7487a0af (diff) | |
parent | f63be060027cf25ce1c64bd02dab2931fc1ceafe (diff) |
Merge #1302
1302: profile type inference r=matklad a=matklad
Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ra_hir/src/db.rs | 2 | ||||
-rw-r--r-- | crates/ra_hir/src/ty.rs | 2 | ||||
-rw-r--r-- | crates/ra_hir/src/ty/infer.rs | 4 | ||||
-rw-r--r-- | crates/ra_hir/src/ty/traits.rs | 2 | ||||
-rw-r--r-- | crates/ra_prof/src/lib.rs | 1 |
5 files changed, 8 insertions, 3 deletions
diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs index da62db58a..11cdf9c34 100644 --- a/crates/ra_hir/src/db.rs +++ b/crates/ra_hir/src/db.rs | |||
@@ -126,7 +126,7 @@ pub trait HirDatabase: DefDatabase { | |||
126 | #[salsa::invoke(ExprScopes::expr_scopes_query)] | 126 | #[salsa::invoke(ExprScopes::expr_scopes_query)] |
127 | fn expr_scopes(&self, def: DefWithBody) -> Arc<ExprScopes>; | 127 | fn expr_scopes(&self, def: DefWithBody) -> Arc<ExprScopes>; |
128 | 128 | ||
129 | #[salsa::invoke(crate::ty::infer)] | 129 | #[salsa::invoke(crate::ty::infer_query)] |
130 | fn infer(&self, def: DefWithBody) -> Arc<InferenceResult>; | 130 | fn infer(&self, def: DefWithBody) -> Arc<InferenceResult>; |
131 | 131 | ||
132 | #[salsa::invoke(crate::ty::type_for_def)] | 132 | #[salsa::invoke(crate::ty::type_for_def)] |
diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs index 9a65bf567..3679a2242 100644 --- a/crates/ra_hir/src/ty.rs +++ b/crates/ra_hir/src/ty.rs | |||
@@ -20,7 +20,7 @@ use crate::{Name, AdtDef, type_ref::Mutability, db::HirDatabase, Trait, GenericP | |||
20 | use display::{HirDisplay, HirFormatter}; | 20 | use display::{HirDisplay, HirFormatter}; |
21 | 21 | ||
22 | pub(crate) use lower::{TypableDef, type_for_def, type_for_field, callable_item_sig, generic_predicates, generic_defaults}; | 22 | pub(crate) use lower::{TypableDef, type_for_def, type_for_field, callable_item_sig, generic_predicates, generic_defaults}; |
23 | pub(crate) use infer::{infer, InferenceResult, InferTy}; | 23 | pub(crate) use infer::{infer_query, InferenceResult, InferTy}; |
24 | pub use lower::CallableDef; | 24 | pub use lower::CallableDef; |
25 | 25 | ||
26 | /// A type constructor or type name: this might be something like the primitive | 26 | /// A type constructor or type name: this might be something like the primitive |
diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs index 1e7d97f51..a48272981 100644 --- a/crates/ra_hir/src/ty/infer.rs +++ b/crates/ra_hir/src/ty/infer.rs | |||
@@ -23,6 +23,7 @@ use ena::unify::{InPlaceUnificationTable, UnifyKey, UnifyValue, NoError}; | |||
23 | use rustc_hash::FxHashMap; | 23 | use rustc_hash::FxHashMap; |
24 | 24 | ||
25 | use ra_arena::map::ArenaMap; | 25 | use ra_arena::map::ArenaMap; |
26 | use ra_prof::profile; | ||
26 | use test_utils::tested_by; | 27 | use test_utils::tested_by; |
27 | 28 | ||
28 | use crate::{ | 29 | use crate::{ |
@@ -51,7 +52,8 @@ use super::{ | |||
51 | mod unify; | 52 | mod unify; |
52 | 53 | ||
53 | /// The entry point of type inference. | 54 | /// The entry point of type inference. |
54 | pub fn infer(db: &impl HirDatabase, def: DefWithBody) -> Arc<InferenceResult> { | 55 | pub fn infer_query(db: &impl HirDatabase, def: DefWithBody) -> Arc<InferenceResult> { |
56 | let _p = profile("infer_query"); | ||
55 | db.check_canceled(); | 57 | db.check_canceled(); |
56 | let body = def.body(db); | 58 | let body = def.body(db); |
57 | let resolver = def.resolver(db); | 59 | let resolver = def.resolver(db); |
diff --git a/crates/ra_hir/src/ty/traits.rs b/crates/ra_hir/src/ty/traits.rs index 190d018ff..f39749cab 100644 --- a/crates/ra_hir/src/ty/traits.rs +++ b/crates/ra_hir/src/ty/traits.rs | |||
@@ -4,6 +4,7 @@ use std::sync::{Arc, Mutex}; | |||
4 | use rustc_hash::FxHashSet; | 4 | use rustc_hash::FxHashSet; |
5 | use log::debug; | 5 | use log::debug; |
6 | use chalk_ir::cast::Cast; | 6 | use chalk_ir::cast::Cast; |
7 | use ra_prof::profile; | ||
7 | 8 | ||
8 | use crate::{Crate, Trait, db::HirDatabase, ImplBlock}; | 9 | use crate::{Crate, Trait, db::HirDatabase, ImplBlock}; |
9 | use super::{TraitRef, Ty, Canonical}; | 10 | use super::{TraitRef, Ty, Canonical}; |
@@ -81,6 +82,7 @@ pub(crate) fn implements_query( | |||
81 | krate: Crate, | 82 | krate: Crate, |
82 | trait_ref: Canonical<TraitRef>, | 83 | trait_ref: Canonical<TraitRef>, |
83 | ) -> Option<Solution> { | 84 | ) -> Option<Solution> { |
85 | let _p = profile("implements_query"); | ||
84 | let goal: chalk_ir::Goal = trait_ref.value.to_chalk(db).cast(); | 86 | let goal: chalk_ir::Goal = trait_ref.value.to_chalk(db).cast(); |
85 | debug!("goal: {:?}", goal); | 87 | debug!("goal: {:?}", goal); |
86 | let env = chalk_ir::Environment::new(); | 88 | let env = chalk_ir::Environment::new(); |
diff --git a/crates/ra_prof/src/lib.rs b/crates/ra_prof/src/lib.rs index e56446c9f..61f2226d7 100644 --- a/crates/ra_prof/src/lib.rs +++ b/crates/ra_prof/src/lib.rs | |||
@@ -198,6 +198,7 @@ fn print(lvl: usize, msgs: &[Message], out: &mut impl Write) { | |||
198 | if l != lvl { | 198 | if l != lvl { |
199 | continue; | 199 | continue; |
200 | } | 200 | } |
201 | |||
201 | writeln!(out, "{} {:6}ms - {}", indent, dur.as_millis(), msg) | 202 | writeln!(out, "{} {:6}ms - {}", indent, dur.as_millis(), msg) |
202 | .expect("printing profiling info to stdout"); | 203 | .expect("printing profiling info to stdout"); |
203 | 204 | ||