about summary refs log tree commit diff
path: root/src/comp/driver
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-02-14 15:21:53 -0800
committerNiko Matsakis <niko@alum.mit.edu>2012-02-24 20:46:27 -0800
commitf3ca50c9ca4fd2084cfbc85030ff5ea21e589635 (patch)
tree026a63d77c1657e897e33adc6de3fedb7b36a341 /src/comp/driver
parentbe9914625b0cbf5f305c5af3adbc6bc337ae760e (diff)
downloadrust-f3ca50c9ca4fd2084cfbc85030ff5ea21e589635.tar.gz
rust-f3ca50c9ca4fd2084cfbc85030ff5ea21e589635.zip
Encode/decode AST into metadata, re-instantiate inlined items
Diffstat (limited to 'src/comp/driver')
-rw-r--r--src/comp/driver/driver.rs17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/comp/driver/driver.rs b/src/comp/driver/driver.rs
index 40cf4e50472..33398722605 100644
--- a/src/comp/driver/driver.rs
+++ b/src/comp/driver/driver.rs
@@ -6,7 +6,7 @@ import syntax::parse::{parser};
 import syntax::{ast, codemap};
 import front::attr;
 import middle::{trans, resolve, freevars, kind, ty, typeck, fn_usage,
-                last_use, lint};
+                last_use, lint, inline};
 import syntax::print::{pp, pprust};
 import util::{ppaux, filesearch};
 import back::link;
@@ -157,7 +157,7 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg,
          bind middle::check_alt::check_crate(ty_cx, crate));
     time(time_passes, "typestate checking",
          bind middle::tstate::ck::check_crate(ty_cx, crate));
-    let mut_map =
+    let mutbl_map =
         time(time_passes, "mutability checking",
              bind middle::mutbl::check_crate(ty_cx, crate));
     let (copy_map, ref_map) =
@@ -173,12 +173,19 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg,
     if upto == cu_no_trans { ret {crate: crate, tcx: some(ty_cx)}; }
     let outputs = option::get(outputs);
 
+    let maps = {mutbl_map: mutbl_map, copy_map: copy_map,
+                last_uses: last_uses, impl_map: impl_map,
+                method_map: method_map, dict_map: dict_map};
+
+    let inline_map =
+        time(time_passes, "inline",
+             bind inline::instantiate_inlines(ty_cx, maps, crate));
+
     let (llmod, link_meta) =
         time(time_passes, "translation",
              bind trans::base::trans_crate(
-                 sess, crate, ty_cx, outputs.obj_filename, exp_map, ast_map,
-                 mut_map, copy_map, last_uses, impl_map, method_map,
-                 dict_map));
+                 sess, crate, ty_cx, outputs.obj_filename,
+                 exp_map, maps, inline_map));
     time(time_passes, "LLVM passes",
          bind link::write::run_passes(sess, llmod, outputs.obj_filename));