diff options
| author | Patrick Walton <[email protected]> | 2011-03-25 10:42:57 -0700 |
|---|---|---|
| committer | Patrick Walton <[email protected]> | 2011-03-25 10:44:24 -0700 |
| commit | 77a3373d53e3b0d1b87135b21307f19922398af9 (patch) | |
| tree | 7ab7d8f75daab48a2d94c042aa6f4ad6a0e73297 /src/comp/driver | |
| parent | Auto-reconfigure on Makefile.in or configure change. (diff) | |
| download | rust-77a3373d53e3b0d1b87135b21307f19922398af9.tar.xz rust-77a3373d53e3b0d1b87135b21307f19922398af9.zip | |
rustc: Create a crate metadata cache
Diffstat (limited to 'src/comp/driver')
| -rw-r--r-- | src/comp/driver/rustc.rs | 5 | ||||
| -rw-r--r-- | src/comp/driver/session.rs | 13 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs index f0ce9a95..b91d0914 100644 --- a/src/comp/driver/rustc.rs +++ b/src/comp/driver/rustc.rs @@ -9,6 +9,7 @@ import middle.resolve; import middle.typeck; import util.common; +import std.map.mk_hashmap; import std.option; import std.option.some; import std.option.none; @@ -112,7 +113,9 @@ impure fn main(vec[str] args) { uint_type = common.ty_u32, float_type = common.ty_f64 ); - auto sess = session.session(target_cfg); + auto crate_cache = common.new_int_hash[session.crate_metadata](); + + auto sess = session.session(target_cfg, crate_cache); let option.t[str] input_file = none[str]; let option.t[str] output_file = none[str]; let vec[str] library_search_paths = vec(); diff --git a/src/comp/driver/session.rs b/src/comp/driver/session.rs index 95f7466d..7ad83dc1 100644 --- a/src/comp/driver/session.rs +++ b/src/comp/driver/session.rs @@ -1,6 +1,7 @@ import util.common.span; import util.common.ty_mach; import std._uint; +import std.map; tag os { os_win32; @@ -20,7 +21,9 @@ type cfg = rec(os os, ty_mach uint_type, ty_mach float_type); -obj session(cfg targ) { +type crate_metadata = vec[u8]; + +obj session(cfg targ, map.hashmap[int, crate_metadata] crates) { fn get_targ_cfg() -> cfg { ret targ; @@ -66,6 +69,14 @@ obj session(cfg targ) { log #fmt("error: unimplemented %s", msg); fail; } + + fn get_external_crate(int num) -> crate_metadata { + ret crates.get(num); + } + + fn set_external_crate(int num, &crate_metadata metadata) { + crates.insert(num, metadata); + } } |