Skip to content

Commit 5b41956

Browse files
committed
Add some self profiler calls
1 parent d081c20 commit 5b41956

File tree

1 file changed

+55
-40
lines changed

1 file changed

+55
-40
lines changed

src/driver/aot.rs

Lines changed: 55 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -258,53 +258,68 @@ fn module_codegen(
258258
ConcurrencyLimiterToken,
259259
),
260260
) -> OngoingModuleCodegen {
261-
let cgu = tcx.codegen_unit(cgu_name);
262-
let mono_items = cgu.items_in_deterministic_order(tcx);
263-
264-
let mut module = make_module(tcx.sess, &backend_config, cgu_name.as_str().to_string());
265-
266-
let mut cx = crate::CodegenCx::new(
267-
tcx,
268-
backend_config.clone(),
269-
module.isa(),
270-
tcx.sess.opts.debuginfo != DebugInfo::None,
271-
cgu_name,
272-
);
273-
super::predefine_mono_items(tcx, &mut module, &mono_items);
274-
let mut codegened_functions = vec![];
275-
for (mono_item, _) in mono_items {
276-
match mono_item {
277-
MonoItem::Fn(inst) => {
278-
tcx.sess.time("codegen fn", || {
279-
let codegened_function =
280-
crate::base::codegen_fn(tcx, &mut cx, Function::new(), &mut module, inst);
281-
codegened_functions.push(codegened_function);
282-
});
283-
}
284-
MonoItem::Static(def_id) => crate::constant::codegen_static(tcx, &mut module, def_id),
285-
MonoItem::GlobalAsm(item_id) => {
286-
crate::global_asm::codegen_global_asm_item(tcx, &mut cx.global_asm, item_id);
261+
let (cgu_name, mut cx, mut module, codegened_functions) = tcx.sess.time("codegen cgu", || {
262+
let cgu = tcx.codegen_unit(cgu_name);
263+
let mono_items = cgu.items_in_deterministic_order(tcx);
264+
265+
let mut module = make_module(tcx.sess, &backend_config, cgu_name.as_str().to_string());
266+
267+
let mut cx = crate::CodegenCx::new(
268+
tcx,
269+
backend_config.clone(),
270+
module.isa(),
271+
tcx.sess.opts.debuginfo != DebugInfo::None,
272+
cgu_name,
273+
);
274+
super::predefine_mono_items(tcx, &mut module, &mono_items);
275+
let mut codegened_functions = vec![];
276+
for (mono_item, _) in mono_items {
277+
match mono_item {
278+
MonoItem::Fn(inst) => {
279+
tcx.sess.time("codegen fn", || {
280+
let codegened_function = crate::base::codegen_fn(
281+
tcx,
282+
&mut cx,
283+
Function::new(),
284+
&mut module,
285+
inst,
286+
);
287+
codegened_functions.push(codegened_function);
288+
});
289+
}
290+
MonoItem::Static(def_id) => {
291+
crate::constant::codegen_static(tcx, &mut module, def_id)
292+
}
293+
MonoItem::GlobalAsm(item_id) => {
294+
crate::global_asm::codegen_global_asm_item(tcx, &mut cx.global_asm, item_id);
295+
}
287296
}
288297
}
289-
}
290-
crate::main_shim::maybe_create_entry_wrapper(
291-
tcx,
292-
&mut module,
293-
&mut cx.unwind_context,
294-
false,
295-
cgu.is_primary(),
296-
);
298+
crate::main_shim::maybe_create_entry_wrapper(
299+
tcx,
300+
&mut module,
301+
&mut cx.unwind_context,
302+
false,
303+
cgu.is_primary(),
304+
);
297305

298-
let cgu_name = cgu.name().as_str().to_owned();
306+
let cgu_name = cgu.name().as_str().to_owned();
307+
308+
(cgu_name, cx, module, codegened_functions)
309+
});
299310

300311
OngoingModuleCodegen::Async(std::thread::spawn(move || {
301-
let mut cached_context = Context::new();
302-
for codegened_func in codegened_functions {
303-
crate::base::compile_fn(&mut cx, &mut cached_context, &mut module, codegened_func);
304-
}
312+
cx.profiler.clone().verbose_generic_activity("compile functions").run(|| {
313+
let mut cached_context = Context::new();
314+
for codegened_func in codegened_functions {
315+
crate::base::compile_fn(&mut cx, &mut cached_context, &mut module, codegened_func);
316+
}
317+
});
305318

306319
let global_asm_object_file =
307-
crate::global_asm::compile_global_asm(&global_asm_config, &cgu_name, &cx.global_asm)?;
320+
cx.profiler.verbose_generic_activity("compile assembly").run(|| {
321+
crate::global_asm::compile_global_asm(&global_asm_config, &cgu_name, &cx.global_asm)
322+
})?;
308323

309324
let codegen_result = cx.profiler.verbose_generic_activity("write object file").run(|| {
310325
emit_cgu(

0 commit comments

Comments
 (0)