Add a compilation pass timing facility.

Individual compilation passes call the corresponding timing::*()
function and hold on to their timing token while they run. This causes
nested per-pass timing information to be recorded in thread-local
storage.

The --time-passes command line option prints a pass timing report to
stdout.
This commit is contained in:
Jakob Stoklund Olesen
2017-12-06 10:56:17 -08:00
parent feaea238bc
commit 60c456c1ec
29 changed files with 305 additions and 12 deletions

View File

@@ -8,6 +8,7 @@ use code_translator::translate_operator;
use cretonne::entity::EntityRef;
use cretonne::ir::{self, InstBuilder, Ebb};
use cretonne::result::{CtonResult, CtonError};
use cretonne::timing;
use cton_frontend::{ILBuilder, FunctionBuilder};
use environ::FuncEnvironment;
use state::TranslationState;
@@ -66,6 +67,7 @@ impl FuncTranslator {
func: &mut ir::Function,
environ: &mut FE,
) -> CtonResult {
let _tt = timing::wasm_translate_function();
dbg!(
"translate({} bytes, {}{})",
reader.bytes_remaining(),