mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-05 11:33:04 +00:00
Replace the crate cache in session with the one in cstore
This commit is contained in:
parent
b23ecd47ce
commit
82983e5005
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 = ~[];
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user