let ty_cx = ty::mk_ctxt(sess, def_map, ast_map, freevars,
region_map, rp_set, lang_items, crate);
- let (method_map, vtable_map) =
- time(time_passes, ~"typechecking", ||
- typeck::check_crate(ty_cx,
- trait_map,
- crate));
+ // passes are timed inside typeck
+ let (method_map, vtable_map) = typeck::check_crate(
+ ty_cx, trait_map, crate);
// These next two const passes can probably be merged
time(time_passes, ~"const marking", ||
use middle::resolve;
use middle::ty::{ty_param_substs_and_ty, vstore_uniq};
use middle::ty;
+use util::common::time;
use util::ppaux;
use core::result;
trait_map: resolve::TraitMap,
crate: @ast::crate)
-> (method_map, vtable_map) {
+ let time_passes = tcx.sess.time_passes();
let ccx = @mut CrateCtxt {
trait_map: trait_map,
method_map: oldmap::HashMap(),
coherence_info: @coherence::CoherenceInfo(),
tcx: tcx
};
- collect::collect_item_types(ccx, crate);
- coherence::check_coherence(ccx, crate);
- check::check_item_types(ccx, crate);
+ time(time_passes, ~"type collecting", ||
+ collect::collect_item_types(ccx, crate));
+
+ time(time_passes, ~"method resolution", ||
+ coherence::check_coherence(ccx, crate));
+
+ time(time_passes, ~"type checking", ||
+ check::check_item_types(ccx, crate));
+
check_for_main_fn(ccx);
tcx.sess.abort_if_errors();
(ccx.method_map, ccx.vtable_map)