Skip to content

Commit bb6d1d3

Browse files
authored
Rollup merge of #81284 - jyn514:impl-times, r=wesleywiser
Make `-Z time-passes` less noisy - Add the module name to `pre_AST_expansion_passes` and don't make it a verbose event (since it normally doesn't take very long, and it's emitted many times) - Don't make the following rustdoc events verbose; they're emitted many times. + build_extern_trait_impl + build_local_trait_impl + build_primitive_trait_impl + get_auto_trait_impls + get_blanket_trait_impls - Remove the `get_auto_trait_and_blanket_synthetic_impls` rustdoc event; it's wholly covered by get_{auto,blanket}_trait_impls and not very useful. I found this while working on #81275 but it's independent of those changes.
2 parents 70be5ce + 3b8f1b7 commit bb6d1d3

File tree

5 files changed

+35
-24
lines changed

5 files changed

+35
-24
lines changed

compiler/rustc_expand/src/base.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -929,15 +929,17 @@ pub struct ExtCtxt<'a> {
929929
pub force_mode: bool,
930930
pub expansions: FxHashMap<Span, Vec<String>>,
931931
/// Called directly after having parsed an external `mod foo;` in expansion.
932-
pub(super) extern_mod_loaded: Option<&'a dyn Fn(&ast::Crate)>,
932+
///
933+
/// `Ident` is the module name.
934+
pub(super) extern_mod_loaded: Option<&'a dyn Fn(&ast::Crate, Ident)>,
933935
}
934936

935937
impl<'a> ExtCtxt<'a> {
936938
pub fn new(
937939
sess: &'a Session,
938940
ecfg: expand::ExpansionConfig<'a>,
939941
resolver: &'a mut dyn ResolverExpand,
940-
extern_mod_loaded: Option<&'a dyn Fn(&ast::Crate)>,
942+
extern_mod_loaded: Option<&'a dyn Fn(&ast::Crate, Ident)>,
941943
) -> ExtCtxt<'a> {
942944
ExtCtxt {
943945
sess,

compiler/rustc_expand/src/expand.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1407,7 +1407,7 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
14071407
proc_macros: vec![],
14081408
};
14091409
if let Some(extern_mod_loaded) = self.cx.extern_mod_loaded {
1410-
extern_mod_loaded(&krate);
1410+
extern_mod_loaded(&krate, ident);
14111411
}
14121412

14131413
*old_mod = krate.module;

compiler/rustc_interface/src/passes.rs

+12-5
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use rustc_session::lint;
3333
use rustc_session::output::{filename_for_input, filename_for_metadata};
3434
use rustc_session::search_paths::PathKind;
3535
use rustc_session::Session;
36-
use rustc_span::symbol::Symbol;
36+
use rustc_span::symbol::{Ident, Symbol};
3737
use rustc_span::{FileName, RealFileName};
3838
use rustc_trait_selection::traits;
3939
use rustc_typeck as typeck;
@@ -211,8 +211,13 @@ pub fn register_plugins<'a>(
211211
Ok((krate, lint_store))
212212
}
213213

214-
fn pre_expansion_lint(sess: &Session, lint_store: &LintStore, krate: &ast::Crate) {
215-
sess.time("pre_AST_expansion_lint_checks", || {
214+
fn pre_expansion_lint(
215+
sess: &Session,
216+
lint_store: &LintStore,
217+
krate: &ast::Crate,
218+
crate_name: &str,
219+
) {
220+
sess.prof.generic_activity_with_arg("pre_AST_expansion_lint_checks", crate_name).run(|| {
216221
rustc_lint::check_ast_crate(
217222
sess,
218223
lint_store,
@@ -233,7 +238,7 @@ fn configure_and_expand_inner<'a>(
233238
metadata_loader: &'a MetadataLoaderDyn,
234239
) -> Result<(ast::Crate, Resolver<'a>)> {
235240
tracing::trace!("configure_and_expand_inner");
236-
pre_expansion_lint(sess, lint_store, &krate);
241+
pre_expansion_lint(sess, lint_store, &krate, crate_name);
237242

238243
let mut resolver = Resolver::new(sess, &krate, crate_name, metadata_loader, &resolver_arenas);
239244
rustc_builtin_macros::register_builtin_macros(&mut resolver);
@@ -295,7 +300,9 @@ fn configure_and_expand_inner<'a>(
295300
..rustc_expand::expand::ExpansionConfig::default(crate_name.to_string())
296301
};
297302

298-
let extern_mod_loaded = |k: &ast::Crate| pre_expansion_lint(sess, lint_store, k);
303+
let extern_mod_loaded = |k: &ast::Crate, ident: Ident| {
304+
pre_expansion_lint(sess, lint_store, k, &*ident.name.as_str())
305+
};
299306
let mut ecx = ExtCtxt::new(&sess, cfg, &mut resolver, Some(&extern_mod_loaded));
300307

301308
// Expand macros now!

src/librustdoc/clean/utils.rs

+10-6
Original file line numberDiff line numberDiff line change
@@ -487,12 +487,16 @@ crate fn get_auto_trait_and_blanket_impls(
487487
ty: Ty<'tcx>,
488488
param_env_def_id: DefId,
489489
) -> impl Iterator<Item = Item> {
490-
let auto_impls = cx.sess().time("get_auto_trait_impls", || {
491-
AutoTraitFinder::new(cx).get_auto_trait_impls(ty, param_env_def_id)
492-
});
493-
let blanket_impls = cx.sess().time("get_blanket_impls", || {
494-
BlanketImplFinder::new(cx).get_blanket_impls(ty, param_env_def_id)
495-
});
490+
let auto_impls = cx
491+
.sess()
492+
.prof
493+
.generic_activity("get_auto_trait_impls")
494+
.run(|| AutoTraitFinder::new(cx).get_auto_trait_impls(ty, param_env_def_id));
495+
let blanket_impls = cx
496+
.sess()
497+
.prof
498+
.generic_activity("get_blanket_impls")
499+
.run(|| BlanketImplFinder::new(cx).get_blanket_impls(ty, param_env_def_id));
496500
auto_impls.into_iter().chain(blanket_impls)
497501
}
498502

src/librustdoc/passes/collect_trait_impls.rs

+8-10
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ crate fn collect_trait_impls(krate: Crate, cx: &DocContext<'_>) -> Crate {
3030

3131
for &cnum in cx.tcx.crates().iter() {
3232
for &(did, _) in cx.tcx.all_trait_implementations(cnum).iter() {
33-
cx.tcx.sess.time("build_extern_trait_impl", || {
33+
cx.tcx.sess.prof.generic_activity("build_extern_trait_impl").run(|| {
3434
inline::build_impl(cx, None, did, None, &mut new_items);
3535
});
3636
}
@@ -39,7 +39,7 @@ crate fn collect_trait_impls(krate: Crate, cx: &DocContext<'_>) -> Crate {
3939
// Also try to inline primitive impls from other crates.
4040
for &def_id in PrimitiveType::all_impls(cx.tcx).values().flatten() {
4141
if !def_id.is_local() {
42-
cx.sess().time("build_primitive_trait_impl", || {
42+
cx.tcx.sess.prof.generic_activity("build_primitive_trait_impls").run(|| {
4343
inline::build_impl(cx, None, def_id, None, &mut new_items);
4444

4545
// FIXME(eddyb) is this `doc(hidden)` check needed?
@@ -59,7 +59,7 @@ crate fn collect_trait_impls(krate: Crate, cx: &DocContext<'_>) -> Crate {
5959
for &trait_did in cx.tcx.all_traits(LOCAL_CRATE).iter() {
6060
for &impl_node in cx.tcx.hir().trait_impls(trait_did) {
6161
let impl_did = cx.tcx.hir().local_def_id(impl_node);
62-
cx.tcx.sess.time("build_local_trait_impl", || {
62+
cx.tcx.sess.prof.generic_activity("build_local_trait_impl").run(|| {
6363
let mut extra_attrs = Vec::new();
6464
let mut parent = cx.tcx.parent(impl_did.to_def_id());
6565
while let Some(did) = parent {
@@ -177,13 +177,11 @@ impl<'a, 'tcx> DocFolder for SyntheticImplCollector<'a, 'tcx> {
177177
if i.is_struct() || i.is_enum() || i.is_union() {
178178
// FIXME(eddyb) is this `doc(hidden)` check needed?
179179
if !self.cx.tcx.get_attrs(i.def_id).lists(sym::doc).has_word(sym::hidden) {
180-
self.cx.sess().time("get_auto_trait_and_blanket_synthetic_impls", || {
181-
self.impls.extend(get_auto_trait_and_blanket_impls(
182-
self.cx,
183-
self.cx.tcx.type_of(i.def_id),
184-
i.def_id,
185-
));
186-
});
180+
self.impls.extend(get_auto_trait_and_blanket_impls(
181+
self.cx,
182+
self.cx.tcx.type_of(i.def_id),
183+
i.def_id,
184+
));
187185
}
188186
}
189187

0 commit comments

Comments
 (0)