diff options
| author | Seo Sanghyeon <sanxiyn@gmail.com> | 2013-03-21 19:28:58 +0900 |
|---|---|---|
| committer | Seo Sanghyeon <sanxiyn@gmail.com> | 2013-03-21 19:28:58 +0900 |
| commit | dad5c3029dd6a3e2d40f5b983c5ceab9a79c4287 (patch) | |
| tree | a6f20509f461682faabf13e826ca2cc2902e5dbb | |
| parent | 64d923f7ddf467e5dfa1999329362c42c892bf3d (diff) | |
| download | rust-dad5c3029dd6a3e2d40f5b983c5ceab9a79c4287.tar.gz rust-dad5c3029dd6a3e2d40f5b983c5ceab9a79c4287.zip | |
Time type checking passes separately
| -rw-r--r-- | src/librustc/driver/driver.rs | 8 | ||||
| -rw-r--r-- | src/librustc/middle/typeck/mod.rs | 14 |
2 files changed, 14 insertions, 8 deletions
diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index 79faf3c516a..37f9bc7dd6f 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -244,11 +244,9 @@ pub fn compile_rest(sess: Session, cfg: ast::crate_cfg, 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", || diff --git a/src/librustc/middle/typeck/mod.rs b/src/librustc/middle/typeck/mod.rs index ed1a3d33f4c..1787c733ed5 100644 --- a/src/librustc/middle/typeck/mod.rs +++ b/src/librustc/middle/typeck/mod.rs @@ -53,6 +53,7 @@ use core::prelude::*; 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; @@ -329,6 +330,7 @@ pub fn check_crate(tcx: ty::ctxt, 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(), @@ -336,10 +338,16 @@ pub fn check_crate(tcx: ty::ctxt, 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) |
