From 82983e5005956b9f08151bdaa8c8a2e5ddbb058f Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 7 Jul 2011 18:13:24 -0700 Subject: [PATCH] Replace the crate cache in session with the one in cstore --- src/comp/driver/rustc.rs | 3 +-- src/comp/driver/session.rs | 6 ------ src/comp/metadata/creader.rs | 3 ++- src/comp/metadata/decoder.rs | 15 ++++++++++----- src/comp/middle/trans.rs | 6 ++++-- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs index 4c6615f11b3b..687376ca6959 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 d0112704e243..7b52919ccad1 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 bc44560b1b4a..f99be6e12320 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 cc3c103ac56a..d90404c79a93 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 02ff9e77cb41..7e92991d38d2 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));