profile type inference

This commit is contained in:
Aleksey Kladov 2019-05-21 16:24:53 +03:00
parent 0f3e85002b
commit f63be06002
4 changed files with 6 additions and 3 deletions

View file

@ -126,7 +126,7 @@ pub trait HirDatabase: DefDatabase {
#[salsa::invoke(ExprScopes::expr_scopes_query)] #[salsa::invoke(ExprScopes::expr_scopes_query)]
fn expr_scopes(&self, def: DefWithBody) -> Arc<ExprScopes>; fn expr_scopes(&self, def: DefWithBody) -> Arc<ExprScopes>;
#[salsa::invoke(crate::ty::infer)] #[salsa::invoke(crate::ty::infer_query)]
fn infer(&self, def: DefWithBody) -> Arc<InferenceResult>; fn infer(&self, def: DefWithBody) -> Arc<InferenceResult>;
#[salsa::invoke(crate::ty::type_for_def)] #[salsa::invoke(crate::ty::type_for_def)]

View file

@ -20,7 +20,7 @@ use crate::{Name, AdtDef, type_ref::Mutability, db::HirDatabase, Trait, GenericP
use display::{HirDisplay, HirFormatter}; use display::{HirDisplay, HirFormatter};
pub(crate) use lower::{TypableDef, type_for_def, type_for_field, callable_item_sig, generic_predicates, generic_defaults}; pub(crate) use lower::{TypableDef, type_for_def, type_for_field, callable_item_sig, generic_predicates, generic_defaults};
pub(crate) use infer::{infer, InferenceResult, InferTy}; pub(crate) use infer::{infer_query, InferenceResult, InferTy};
pub use lower::CallableDef; pub use lower::CallableDef;
/// A type constructor or type name: this might be something like the primitive /// A type constructor or type name: this might be something like the primitive

View file

@ -23,6 +23,7 @@ use ena::unify::{InPlaceUnificationTable, UnifyKey, UnifyValue, NoError};
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
use ra_arena::map::ArenaMap; use ra_arena::map::ArenaMap;
use ra_prof::profile;
use test_utils::tested_by; use test_utils::tested_by;
use crate::{ use crate::{
@ -51,7 +52,8 @@ use super::{
mod unify; mod unify;
/// The entry point of type inference. /// The entry point of type inference.
pub fn infer(db: &impl HirDatabase, def: DefWithBody) -> Arc<InferenceResult> { pub fn infer_query(db: &impl HirDatabase, def: DefWithBody) -> Arc<InferenceResult> {
let _p = profile("infer_query");
db.check_canceled(); db.check_canceled();
let body = def.body(db); let body = def.body(db);
let resolver = def.resolver(db); let resolver = def.resolver(db);

View file

@ -198,6 +198,7 @@ fn print(lvl: usize, msgs: &[Message], out: &mut impl Write) {
if l != lvl { if l != lvl {
continue; continue;
} }
writeln!(out, "{} {:6}ms - {}", indent, dur.as_millis(), msg) writeln!(out, "{} {:6}ms - {}", indent, dur.as_millis(), msg)
.expect("printing profiling info to stdout"); .expect("printing profiling info to stdout");