Skip to content

Commit dad5c30

Browse files
committed
Time type checking passes separately
1 parent 64d923f commit dad5c30

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

src/librustc/driver/driver.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -244,11 +244,9 @@ pub fn compile_rest(sess: Session, cfg: ast::crate_cfg,
244244
let ty_cx = ty::mk_ctxt(sess, def_map, ast_map, freevars,
245245
region_map, rp_set, lang_items, crate);
246246

247-
let (method_map, vtable_map) =
248-
time(time_passes, ~"typechecking", ||
249-
typeck::check_crate(ty_cx,
250-
trait_map,
251-
crate));
247+
// passes are timed inside typeck
248+
let (method_map, vtable_map) = typeck::check_crate(
249+
ty_cx, trait_map, crate);
252250

253251
// These next two const passes can probably be merged
254252
time(time_passes, ~"const marking", ||

src/librustc/middle/typeck/mod.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ use core::prelude::*;
5353
use middle::resolve;
5454
use middle::ty::{ty_param_substs_and_ty, vstore_uniq};
5555
use middle::ty;
56+
use util::common::time;
5657
use util::ppaux;
5758

5859
use core::result;
@@ -329,17 +330,24 @@ pub fn check_crate(tcx: ty::ctxt,
329330
trait_map: resolve::TraitMap,
330331
crate: @ast::crate)
331332
-> (method_map, vtable_map) {
333+
let time_passes = tcx.sess.time_passes();
332334
let ccx = @mut CrateCtxt {
333335
trait_map: trait_map,
334336
method_map: oldmap::HashMap(),
335337
vtable_map: oldmap::HashMap(),
336338
coherence_info: @coherence::CoherenceInfo(),
337339
tcx: tcx
338340
};
339-
collect::collect_item_types(ccx, crate);
340-
coherence::check_coherence(ccx, crate);
341341

342-
check::check_item_types(ccx, crate);
342+
time(time_passes, ~"type collecting", ||
343+
collect::collect_item_types(ccx, crate));
344+
345+
time(time_passes, ~"method resolution", ||
346+
coherence::check_coherence(ccx, crate));
347+
348+
time(time_passes, ~"type checking", ||
349+
check::check_item_types(ccx, crate));
350+
343351
check_for_main_fn(ccx);
344352
tcx.sess.abort_if_errors();
345353
(ccx.method_map, ccx.vtable_map)

0 commit comments

Comments
 (0)