about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-07-07 18:13:24 -0700
committerBrian Anderson <banderson@mozilla.com>2011-07-08 09:37:00 -0700
commit82983e5005956b9f08151bdaa8c8a2e5ddbb058f (patch)
tree82d050e148045b7605b07b50183664e709a58187 /src/comp
parentb23ecd47ceb7468d5132b9bf81d1d9c4e3fd1084 (diff)
downloadrust-82983e5005956b9f08151bdaa8c8a2e5ddbb058f.tar.gz
rust-82983e5005956b9f08151bdaa8c8a2e5ddbb058f.zip
Replace the crate cache in session with the one in cstore
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/driver/rustc.rs3
-rw-r--r--src/comp/driver/session.rs6
-rw-r--r--src/comp/metadata/creader.rs3
-rw-r--r--src/comp/metadata/decoder.rs15
-rw-r--r--src/comp/middle/trans.rs6
5 files changed, 17 insertions, 16 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs
index 4c6615f11b3..687376ca695 100644
--- a/src/comp/driver/rustc.rs
+++ b/src/comp/driver/rustc.rs
@@ -353,8 +353,7 @@ fn build_session_options(str binary, getopts::match match, str binary_dir) ->
 fn build_session(@session::options sopts) -> session::session {
     auto target_cfg = build_target_config();
     auto cstore = metadata::cstore::mk_cstore();
-    auto crate_cache = std::map::new_int_hash[session::crate_metadata]();
-    ret session::session(target_cfg, sopts, cstore, crate_cache, [],
+    ret session::session(target_cfg, sopts, cstore, [],
                          [], [], codemap::new_codemap(), 0u);
 }
 
diff --git a/src/comp/driver/session.rs b/src/comp/driver/session.rs
index d0112704e24..7b52919ccad 100644
--- a/src/comp/driver/session.rs
+++ b/src/comp/driver/session.rs
@@ -46,7 +46,6 @@ type crate_metadata = rec(str name, vec[u8] data);
 obj session(@config targ_cfg,
             @options opts,
             metadata::cstore::cstore cstore,
-            map::hashmap[int, crate_metadata] crates,
             mutable vec[str] used_crate_files,
             mutable vec[str] used_libraries,
             mutable vec[str] used_link_args,
@@ -101,11 +100,6 @@ obj session(@config targ_cfg,
         self.span_bug(sp, "unimplemented " + msg);
     }
     fn unimpl(str msg) -> ! { self.bug("unimplemented " + msg); }
-    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);
-    }
-    fn has_external_crate(int num) -> bool { ret crates.contains_key(num); }
     fn add_used_link_args(&str args) {
         used_link_args += str::split(args, ' ' as u8);
     }
diff --git a/src/comp/metadata/creader.rs b/src/comp/metadata/creader.rs
index bc44560b1b4..f99be6e1232 100644
--- a/src/comp/metadata/creader.rs
+++ b/src/comp/metadata/creader.rs
@@ -138,7 +138,8 @@ fn load_library_crate(&session::session sess, span span, int cnum,
                       &vec[str] library_search_paths) {
     alt (find_library_crate(sess, ident, metas, library_search_paths)) {
         case (some(?t)) {
-            sess.set_external_crate(cnum, rec(name=ident, data=t._1));
+            cstore::set_crate_data(sess.get_cstore(), cnum,
+                                   rec(name=ident, data=t._1));
             sess.add_used_crate_file(t._0);
             ret;
         }
diff --git a/src/comp/metadata/decoder.rs b/src/comp/metadata/decoder.rs
index cc3c103ac56..d90404c79a9 100644
--- a/src/comp/metadata/decoder.rs
+++ b/src/comp/metadata/decoder.rs
@@ -15,6 +15,7 @@ import tydecode::parse_def_id;
 import tydecode::parse_ty_data;
 import driver::session;
 import syntax::print::pprust;
+import cstore;
 
 export get_symbol;
 export get_tag_variants;
@@ -138,7 +139,7 @@ fn resolve_path(vec[ast::ident] path, vec[u8] data) -> vec[ast::def_id] {
 // Crate metadata queries
 fn lookup_defs(session::session sess, int cnum, vec[ast::ident] path) ->
    vec[ast::def] {
-    auto data = sess.get_external_crate(cnum).data;
+    auto data = cstore::get_crate_data(sess.get_cstore(), cnum).data;
     ret vec::map(bind lookup_def(cnum, data, _), resolve_path(path, data));
 }
 
@@ -171,7 +172,8 @@ fn lookup_def(int cnum, vec[u8] data, &ast::def_id did_) -> ast::def {
 
 fn get_type(ty::ctxt tcx, ast::def_id def) -> ty::ty_param_count_and_ty {
     auto external_crate_id = def._0;
-    auto data = tcx.sess.get_external_crate(external_crate_id).data;
+    auto data = cstore::get_crate_data(tcx.sess.get_cstore(),
+                                       external_crate_id).data;
     auto item = lookup_item(def._1, data);
     auto t = item_type(item, external_crate_id, tcx);
     auto tp_count;
@@ -184,19 +186,22 @@ fn get_type(ty::ctxt tcx, ast::def_id def) -> ty::ty_param_count_and_ty {
 }
 
 fn get_type_param_count(ty::ctxt tcx, &ast::def_id def) -> uint {
-    auto data = tcx.sess.get_external_crate(def._0).data;
+    auto data = cstore::get_crate_data(tcx.sess.get_cstore(),
+                                       def._0).data;
     ret item_ty_param_count(lookup_item(def._1, data));
 }
 
 fn get_symbol(session::session sess, ast::def_id def) -> str {
     auto external_crate_id = def._0;
-    auto data = sess.get_external_crate(external_crate_id).data;
+    auto data = cstore::get_crate_data(sess.get_cstore(),
+                                       external_crate_id).data;
     ret item_symbol(lookup_item(def._1, data));
 }
 
 fn get_tag_variants(ty::ctxt tcx, ast::def_id def) -> ty::variant_info[] {
     auto external_crate_id = def._0;
-    auto data = tcx.sess.get_external_crate(external_crate_id).data;
+    auto data = cstore::get_crate_data(tcx.sess.get_cstore(),
+                                       external_crate_id).data;
     auto items = ebml::get_doc(ebml::new_doc(data), tag_items);
     auto item = find_item(def._1, items);
     let ty::variant_info[] infos = ~[];
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 02ff9e77cb4..7e92991d38d 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -66,6 +66,7 @@ import link::mangle_exported_name;
 import metadata::tyencode;
 import metadata::creader;
 import metadata::decoder;
+import metadata::cstore;
 import util::ppaux::ty_to_str;
 import util::ppaux::ty_to_short_str;
 import syntax::print::pprust::expr_to_str;
@@ -9262,8 +9263,9 @@ fn create_module_map(&@crate_ctxt ccx) -> ValueRef {
 fn create_crate_map(&@crate_ctxt ccx) -> ValueRef {
     let ValueRef[] subcrates = ~[];
     auto i = 1;
-    while (ccx.sess.has_external_crate(i)) {
-        auto name = ccx.sess.get_external_crate(i).name;
+    auto cstore = ccx.sess.get_cstore();
+    while (cstore::have_crate_data(cstore, i)) {
+        auto name = cstore::get_crate_data(cstore, i).name;
         auto cr =
             llvm::LLVMAddGlobal(ccx.llmod, T_int(),
                                 str::buf("_rust_crate_map_" + name));