]> git.lizzy.rs Git - rust.git/commitdiff
De-@ CStore uses.
authorEduard Burtescu <edy.burt@gmail.com>
Sun, 9 Mar 2014 13:20:44 +0000 (15:20 +0200)
committerEduard Burtescu <edy.burt@gmail.com>
Mon, 17 Mar 2014 07:53:07 +0000 (09:53 +0200)
14 files changed:
src/librustc/back/link.rs
src/librustc/driver/driver.rs
src/librustc/driver/session.rs
src/librustc/metadata/creader.rs
src/librustc/metadata/csearch.rs
src/librustc/metadata/encoder.rs
src/librustc/middle/lang_items.rs
src/librustc/middle/lint.rs
src/librustc/middle/privacy.rs
src/librustc/middle/resolve.rs
src/librustc/middle/trans/base.rs
src/librustc/middle/trans/expr.rs
src/librustc/middle/ty.rs
src/librustc/middle/typeck/coherence.rs

index 6830acc19601ad1d22f223b151c2d67e30c0a6bb..2e6b842f3f9dfb4399b3b2b587f6bf90f020a11d 100644 (file)
@@ -1000,7 +1000,7 @@ fn link_staticlib(sess: &Session, obj_filename: &Path, out_filename: &Path) {
             }
         };
         a.add_rlib(&p, name, sess.lto()).unwrap();
-        let native_libs = csearch::get_native_libraries(sess.cstore, cnum);
+        let native_libs = csearch::get_native_libraries(&sess.cstore, cnum);
         for &(kind, ref lib) in native_libs.iter() {
             let name = match kind {
                 cstore::NativeStatic => "static library",
@@ -1302,8 +1302,8 @@ fn add_upstream_rust_crates(args: &mut Vec<~str>, sess: &Session,
     // * If one form of linking fails, the second is also attempted
     // * If both forms fail, then we emit an error message
 
-    let dynamic = get_deps(sess.cstore, cstore::RequireDynamic);
-    let statik = get_deps(sess.cstore, cstore::RequireStatic);
+    let dynamic = get_deps(&sess.cstore, cstore::RequireDynamic);
+    let statik = get_deps(&sess.cstore, cstore::RequireStatic);
     match (dynamic, statik, sess.opts.cg.prefer_dynamic, dylib) {
         (_, Some(deps), false, false) => {
             add_static_crates(args, sess, tmpdir, deps)
@@ -1459,7 +1459,7 @@ fn add_dynamic_crates(args: &mut Vec<~str>, sess: &Session,
 // be instantiated in the target crate, meaning that the native symbol must
 // also be resolved in the target crate.
 fn add_upstream_native_libraries(args: &mut Vec<~str>, sess: &Session) {
-    let cstore = sess.cstore;
+    let cstore = &sess.cstore;
     cstore.iter_crate_data(|cnum, _| {
         let libs = csearch::get_native_libraries(cstore, cnum);
         for &(kind, ref lib) in libs.iter() {
index 9eeb5bb7ad7427a26f52adc114f5d317d538585f..dee0cf23ec7f7963c7eb1034847d5c6b78ca961f 100644 (file)
@@ -1004,7 +1004,6 @@ pub fn build_session_(sopts: @session::Options,
                       -> Session {
     let target_cfg = build_target_config(sopts);
     let p_s = parse::new_parse_sess_special_handler(span_diagnostic_handler, codemap);
-    let cstore = @CStore::new(token::get_ident_interner());
     let default_sysroot = match sopts.maybe_sysroot {
         Some(_) => None,
         None => Some(filesearch::get_or_default_sysroot())
@@ -1022,7 +1021,7 @@ pub fn build_session_(sopts: @session::Options,
     Session {
         targ_cfg: target_cfg,
         opts: sopts,
-        cstore: cstore,
+        cstore: CStore::new(token::get_ident_interner()),
         parse_sess: p_s,
         codemap: codemap,
         // For a library crate, this is always none
index 20bbab27434201c0508729e6e08fa85d764bd5e6..5cdfe3691c7212baacd1c82ead3e01ba9e8f52c0 100644 (file)
@@ -176,7 +176,7 @@ pub enum CrateType {
 pub struct Session {
     targ_cfg: @Config,
     opts: @Options,
-    cstore: @metadata::cstore::CStore,
+    cstore: metadata::cstore::CStore,
     parse_sess: @ParseSess,
     codemap: @codemap::CodeMap,
     // For a library crate, this is always none
index 5c81b6227044ba1d9ee68a4d9db7b97b2ce2f79f..359f28f2ad177044da7bd65ea9cbbe155b3b0161 100644 (file)
@@ -120,12 +120,10 @@ struct Env<'a> {
 }
 
 fn visit_crate(e: &Env, c: &ast::Crate) {
-    let cstore = e.sess.cstore;
-
     for a in c.attrs.iter().filter(|m| m.name().equiv(&("link_args"))) {
         match a.value_str() {
-          Some(ref linkarg) => cstore.add_used_link_args(linkarg.get()),
-          None => { /* fallthrough */ }
+            Some(ref linkarg) => e.sess.cstore.add_used_link_args(linkarg.get()),
+            None => { /* fallthrough */ }
         }
     }
 }
@@ -195,7 +193,6 @@ fn visit_item(e: &Env, i: &ast::Item) {
             }
 
             // First, add all of the custom link_args attributes
-            let cstore = e.sess.cstore;
             let link_args = i.attrs.iter()
                 .filter_map(|at| if at.name().equiv(&("link_args")) {
                     Some(at)
@@ -205,13 +202,12 @@ fn visit_item(e: &Env, i: &ast::Item) {
                 .to_owned_vec();
             for m in link_args.iter() {
                 match m.value_str() {
-                    Some(linkarg) => cstore.add_used_link_args(linkarg.get()),
+                    Some(linkarg) => e.sess.cstore.add_used_link_args(linkarg.get()),
                     None => { /* fallthrough */ }
                 }
             }
 
             // Next, process all of the #[link(..)]-style arguments
-            let cstore = e.sess.cstore;
             let link_args = i.attrs.iter()
                 .filter_map(|at| if at.name().equiv(&("link")) {
                     Some(at)
@@ -260,7 +256,7 @@ fn visit_item(e: &Env, i: &ast::Item) {
                         if n.get().is_empty() {
                             e.sess.span_err(m.span, "#[link(name = \"\")] given with empty name");
                         } else {
-                            cstore.add_used_library(n.get().to_owned(), kind);
+                            e.sess.cstore.add_used_library(n.get().to_owned(), kind);
                         }
                     }
                     None => {}
@@ -344,18 +340,15 @@ fn resolve_crate(e: &mut Env,
                 cnum: cnum
             };
 
-            let cstore = e.sess.cstore;
-            cstore.set_crate_data(cnum, cmeta);
-            cstore.add_used_crate_source(cstore::CrateSource {
+            e.sess.cstore.set_crate_data(cnum, cmeta);
+            e.sess.cstore.add_used_crate_source(cstore::CrateSource {
                 dylib: dylib,
                 rlib: rlib,
                 cnum: cnum,
             });
-            return cnum;
-        }
-        Some(cnum) => {
-            return cnum;
+            cnum
         }
+        Some(cnum) => cnum
     }
 }
 
@@ -415,12 +408,12 @@ fn load_crate(&mut self, krate: &ast::ViewItem) -> MacroCrate {
     }
 
     fn get_exported_macros(&mut self, cnum: ast::CrateNum) -> Vec<~str> {
-        csearch::get_exported_macros(self.env.sess.cstore, cnum).move_iter()
-                                                                .collect()
+        csearch::get_exported_macros(&self.env.sess.cstore, cnum).move_iter()
+                                                                 .collect()
     }
 
     fn get_registrar_symbol(&mut self, cnum: ast::CrateNum) -> Option<~str> {
-        let cstore = self.env.sess.cstore;
+        let cstore = &self.env.sess.cstore;
         csearch::get_macro_registrar_fn(cstore, cnum)
             .map(|did| csearch::get_symbol(cstore, did))
     }
index 64e12679da1b1dd0255ef990267ef2a3ef39367f..95c85a04b19e55e36365aa51463b1a6d6c18d97a 100644 (file)
@@ -34,19 +34,19 @@ pub struct StaticMethodInfo {
     vis: ast::Visibility,
 }
 
-pub fn get_symbol(cstore: @cstore::CStore, def: ast::DefId) -> ~str {
+pub fn get_symbol(cstore: &cstore::CStore, def: ast::DefId) -> ~str {
     let cdata = cstore.get_crate_data(def.krate).data();
     return decoder::get_symbol(cdata, def.node);
 }
 
-pub fn get_type_param_count(cstore: @cstore::CStore, def: ast::DefId)
+pub fn get_type_param_count(cstore: &cstore::CStore, def: ast::DefId)
                          -> uint {
     let cdata = cstore.get_crate_data(def.krate).data();
     return decoder::get_type_param_count(cdata, def.node);
 }
 
 /// Iterates over all the language items in the given crate.
-pub fn each_lang_item(cstore: @cstore::CStore,
+pub fn each_lang_item(cstore: &cstore::CStore,
                       cnum: ast::CrateNum,
                       f: |ast::NodeId, uint| -> bool)
                       -> bool {
@@ -55,7 +55,7 @@ pub fn each_lang_item(cstore: @cstore::CStore,
 }
 
 /// Iterates over each child of the given item.
-pub fn each_child_of_item(cstore: @cstore::CStore,
+pub fn each_child_of_item(cstore: &cstore::CStore,
                           def_id: ast::DefId,
                           callback: |decoder::DefLike,
                                      ast::Ident,
@@ -72,7 +72,7 @@ pub fn each_child_of_item(cstore: @cstore::CStore,
 }
 
 /// Iterates over each top-level crate item.
-pub fn each_top_level_item_of_crate(cstore: @cstore::CStore,
+pub fn each_top_level_item_of_crate(cstore: &cstore::CStore,
                                     cnum: ast::CrateNum,
                                     callback: |decoder::DefLike,
                                                ast::Ident,
@@ -88,7 +88,7 @@ pub fn each_top_level_item_of_crate(cstore: @cstore::CStore,
 }
 
 pub fn get_item_path(tcx: &ty::ctxt, def: ast::DefId) -> Vec<ast_map::PathElem> {
-    let cstore = tcx.cstore;
+    let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(def.krate);
     let path = decoder::get_item_path(cdata, def.node);
 
@@ -110,14 +110,14 @@ pub enum found_ast {
 pub fn maybe_get_item_ast(tcx: &ty::ctxt, def: ast::DefId,
                           decode_inlined_item: decoder::DecodeInlinedItem)
                        -> found_ast {
-    let cstore = tcx.cstore;
+    let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(def.krate);
     decoder::maybe_get_item_ast(cdata, tcx, def.node, decode_inlined_item)
 }
 
 pub fn get_enum_variants(tcx: &ty::ctxt, def: ast::DefId)
                       -> Vec<@ty::VariantInfo> {
-    let cstore = tcx.cstore;
+    let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(def.krate);
     return decoder::get_enum_variants(cstore.intr, cdata, def.node, tcx)
 }
@@ -125,16 +125,16 @@ pub fn get_enum_variants(tcx: &ty::ctxt, def: ast::DefId)
 /// Returns information about the given implementation.
 pub fn get_impl(tcx: &ty::ctxt, impl_def_id: ast::DefId)
                 -> ty::Impl {
-    let cdata = tcx.cstore.get_crate_data(impl_def_id.krate);
-    decoder::get_impl(tcx.cstore.intr, cdata, impl_def_id.node, tcx)
+    let cdata = tcx.sess.cstore.get_crate_data(impl_def_id.krate);
+    decoder::get_impl(tcx.sess.cstore.intr, cdata, impl_def_id.node, tcx)
 }
 
 pub fn get_method(tcx: &ty::ctxt, def: ast::DefId) -> ty::Method {
-    let cdata = tcx.cstore.get_crate_data(def.krate);
-    decoder::get_method(tcx.cstore.intr, cdata, def.node, tcx)
+    let cdata = tcx.sess.cstore.get_crate_data(def.krate);
+    decoder::get_method(tcx.sess.cstore.intr, cdata, def.node, tcx)
 }
 
-pub fn get_method_name_and_explicit_self(cstore: @cstore::CStore,
+pub fn get_method_name_and_explicit_self(cstore: &cstore::CStore,
                                          def: ast::DefId)
                                      -> (ast::Ident, ast::ExplicitSelf_)
 {
@@ -142,13 +142,13 @@ pub fn get_method_name_and_explicit_self(cstore: @cstore::CStore,
     decoder::get_method_name_and_explicit_self(cstore.intr, cdata, def.node)
 }
 
-pub fn get_trait_method_def_ids(cstore: @cstore::CStore,
+pub fn get_trait_method_def_ids(cstore: &cstore::CStore,
                                 def: ast::DefId) -> Vec<ast::DefId> {
     let cdata = cstore.get_crate_data(def.krate);
     decoder::get_trait_method_def_ids(cdata, def.node)
 }
 
-pub fn get_item_variances(cstore: @cstore::CStore,
+pub fn get_item_variances(cstore: &cstore::CStore,
                           def: ast::DefId) -> ty::ItemVariances {
     let cdata = cstore.get_crate_data(def.krate);
     decoder::get_item_variances(cdata, def.node)
@@ -157,38 +157,38 @@ pub fn get_item_variances(cstore: @cstore::CStore,
 pub fn get_provided_trait_methods(tcx: &ty::ctxt,
                                   def: ast::DefId)
                                -> Vec<@ty::Method> {
-    let cstore = tcx.cstore;
+    let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(def.krate);
     decoder::get_provided_trait_methods(cstore.intr, cdata, def.node, tcx)
 }
 
 pub fn get_supertraits(tcx: &ty::ctxt, def: ast::DefId) -> Vec<@ty::TraitRef> {
-    let cstore = tcx.cstore;
+    let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(def.krate);
     decoder::get_supertraits(cdata, def.node, tcx)
 }
 
-pub fn get_type_name_if_impl(cstore: @cstore::CStore, def: ast::DefId)
+pub fn get_type_name_if_impl(cstore: &cstore::CStore, def: ast::DefId)
                           -> Option<ast::Ident> {
     let cdata = cstore.get_crate_data(def.krate);
     decoder::get_type_name_if_impl(cdata, def.node)
 }
 
-pub fn get_static_methods_if_impl(cstore: @cstore::CStore,
+pub fn get_static_methods_if_impl(cstore: &cstore::CStore,
                                   def: ast::DefId)
                                -> Option<Vec<StaticMethodInfo> > {
     let cdata = cstore.get_crate_data(def.krate);
     decoder::get_static_methods_if_impl(cstore.intr, cdata, def.node)
 }
 
-pub fn get_item_attrs(cstore: @cstore::CStore,
+pub fn get_item_attrs(cstore: &cstore::CStore,
                       def_id: ast::DefId,
                       f: |Vec<@ast::MetaItem> |) {
     let cdata = cstore.get_crate_data(def_id.krate);
     decoder::get_item_attrs(cdata, def_id.node, f)
 }
 
-pub fn get_struct_fields(cstore: @cstore::CStore,
+pub fn get_struct_fields(cstore: &cstore::CStore,
                          def: ast::DefId)
                       -> Vec<ty::field_ty> {
     let cdata = cstore.get_crate_data(def.krate);
@@ -198,20 +198,20 @@ pub fn get_struct_fields(cstore: @cstore::CStore,
 pub fn get_type(tcx: &ty::ctxt,
                 def: ast::DefId)
              -> ty::ty_param_bounds_and_ty {
-    let cstore = tcx.cstore;
+    let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(def.krate);
     decoder::get_type(cdata, def.node, tcx)
 }
 
 pub fn get_trait_def(tcx: &ty::ctxt, def: ast::DefId) -> ty::TraitDef {
-    let cstore = tcx.cstore;
+    let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(def.krate);
     decoder::get_trait_def(cdata, def.node, tcx)
 }
 
 pub fn get_field_type(tcx: &ty::ctxt, class_id: ast::DefId,
                       def: ast::DefId) -> ty::ty_param_bounds_and_ty {
-    let cstore = tcx.cstore;
+    let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(class_id.krate);
     let all_items = reader::get_doc(reader::Doc(cdata.data()), tag_items);
     let class_doc = expect(tcx.diag,
@@ -234,7 +234,7 @@ pub fn get_field_type(tcx: &ty::ctxt, class_id: ast::DefId,
 // if there is one.
 pub fn get_impl_trait(tcx: &ty::ctxt,
                       def: ast::DefId) -> Option<@ty::TraitRef> {
-    let cstore = tcx.cstore;
+    let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(def.krate);
     decoder::get_impl_trait(cdata, def.node, tcx)
 }
@@ -242,12 +242,12 @@ pub fn get_impl_trait(tcx: &ty::ctxt,
 // Given a def_id for an impl, return information about its vtables
 pub fn get_impl_vtables(tcx: &ty::ctxt,
                         def: ast::DefId) -> typeck::impl_res {
-    let cstore = tcx.cstore;
+    let cstore = &tcx.sess.cstore;
     let cdata = cstore.get_crate_data(def.krate);
     decoder::get_impl_vtables(cdata, def.node, tcx)
 }
 
-pub fn get_impl_method(cstore: @cstore::CStore,
+pub fn get_impl_method(cstore: &cstore::CStore,
                        def: ast::DefId,
                        mname: ast::Ident)
                     -> Option<ast::DefId> {
@@ -255,35 +255,35 @@ pub fn get_impl_method(cstore: @cstore::CStore,
     decoder::get_impl_method(cstore.intr, cdata, def.node, mname)
 }
 
-pub fn get_item_visibility(cstore: @cstore::CStore,
+pub fn get_item_visibility(cstore: &cstore::CStore,
                            def_id: ast::DefId)
                         -> ast::Visibility {
     let cdata = cstore.get_crate_data(def_id.krate);
     decoder::get_item_visibility(cdata, def_id.node)
 }
 
-pub fn get_native_libraries(cstore: @cstore::CStore,
+pub fn get_native_libraries(cstore: &cstore::CStore,
                             crate_num: ast::CrateNum)
                                 -> Vec<(cstore::NativeLibaryKind, ~str)> {
     let cdata = cstore.get_crate_data(crate_num);
     decoder::get_native_libraries(cdata)
 }
 
-pub fn each_impl(cstore: @cstore::CStore,
+pub fn each_impl(cstore: &cstore::CStore,
                  crate_num: ast::CrateNum,
                  callback: |ast::DefId|) {
     let cdata = cstore.get_crate_data(crate_num);
     decoder::each_impl(cdata, callback)
 }
 
-pub fn each_implementation_for_type(cstore: @cstore::CStore,
+pub fn each_implementation_for_type(cstore: &cstore::CStore,
                                     def_id: ast::DefId,
                                     callback: |ast::DefId|) {
     let cdata = cstore.get_crate_data(def_id.krate);
     decoder::each_implementation_for_type(cdata, def_id.node, callback)
 }
 
-pub fn each_implementation_for_trait(cstore: @cstore::CStore,
+pub fn each_implementation_for_trait(cstore: &cstore::CStore,
                                      def_id: ast::DefId,
                                      callback: |ast::DefId|) {
     let cdata = cstore.get_crate_data(def_id.krate);
@@ -293,7 +293,7 @@ pub fn each_implementation_for_trait(cstore: @cstore::CStore,
 /// If the given def ID describes a method belonging to a trait (either a
 /// default method or an implementation of a trait method), returns the ID of
 /// the trait that the method belongs to. Otherwise, returns `None`.
-pub fn get_trait_of_method(cstore: @cstore::CStore,
+pub fn get_trait_of_method(cstore: &cstore::CStore,
                            def_id: ast::DefId,
                            tcx: &ty::ctxt)
                            -> Option<ast::DefId> {
@@ -301,14 +301,14 @@ pub fn get_trait_of_method(cstore: @cstore::CStore,
     decoder::get_trait_of_method(cdata, def_id.node, tcx)
 }
 
-pub fn get_macro_registrar_fn(cstore: @cstore::CStore,
+pub fn get_macro_registrar_fn(cstore: &cstore::CStore,
                               crate_num: ast::CrateNum)
                               -> Option<ast::DefId> {
     let cdata = cstore.get_crate_data(crate_num);
     decoder::get_macro_registrar_fn(cdata)
 }
 
-pub fn get_exported_macros(cstore: @cstore::CStore,
+pub fn get_exported_macros(cstore: &cstore::CStore,
                            crate_num: ast::CrateNum)
                            -> Vec<~str> {
     let cdata = cstore.get_crate_data(crate_num);
index b4d2eed0b9b1c73a71e5028cfd5034114bb84e9d..a1ee7d39ed7e61e2d8c09900c6977350ee18b056 100644 (file)
@@ -74,7 +74,7 @@ pub struct EncodeParams<'a> {
     item_symbols: &'a RefCell<NodeMap<~str>>,
     non_inlineable_statics: &'a RefCell<NodeSet>,
     link_meta: &'a LinkMeta,
-    cstore: @cstore::CStore,
+    cstore: &'a cstore::CStore,
     encode_inlined_item: EncodeInlinedItem<'a>,
 }
 
index ef1a84fd8869ca14975db0608c5b2ad695d758dc..2ce34a31129ecc512e82547b75efe8331825aa17 100644 (file)
@@ -165,7 +165,7 @@ pub fn collect_local_language_items(&mut self, krate: &ast::Crate) {
     }
 
     pub fn collect_external_language_items(&mut self) {
-        let crate_store = self.session.cstore;
+        let crate_store = &self.session.cstore;
         crate_store.iter_crate_data(|crate_number, _crate_metadata| {
             each_lang_item(crate_store, crate_number, |node_id, item_index| {
                 let def_id = ast::DefId { krate: crate_number, node: node_id };
index 88ba1b990c1656cef38c2ecfddd3059989ec493a..6ea26a9c5aab3ca7ab1320dc64de0b1d22a4783c 100644 (file)
@@ -1100,7 +1100,7 @@ fn check_unused_result(cx: &Context, s: &ast::Stmt) {
                     _ => {}
                 }
             } else {
-                csearch::get_item_attrs(cx.tcx.sess.cstore, did, |attrs| {
+                csearch::get_item_attrs(&cx.tcx.sess.cstore, did, |attrs| {
                     if attr::contains_name(attrs.as_slice(), "must_use") {
                         cx.span_lint(UnusedMustUse, s.span,
                                      "unused result which must be used");
@@ -1562,7 +1562,7 @@ fn check_stability(cx: &Context, e: &ast::Expr) {
         let mut s = None;
         // run through all the attributes and take the first
         // stability one.
-        csearch::get_item_attrs(cx.tcx.cstore, id, |meta_items| {
+        csearch::get_item_attrs(&cx.tcx.sess.cstore, id, |meta_items| {
             if s.is_none() {
                 s = attr::find_stability(meta_items.move_iter())
             }
index 1c98f745ab0920a657bc1888904563fb767804d5..1de38d8a461e4a2e5e6513ab9af0409d4cd70caa 100644 (file)
@@ -585,7 +585,7 @@ fn check_field(&mut self, span: Span, id: ast::DefId, ident: ast::Ident,
                 }
             }
         } else {
-            let cstore = self.tcx.sess.cstore;
+            let cstore = &self.tcx.sess.cstore;
             match enum_id {
                 Some(enum_id) => {
                     let v = csearch::get_enum_variants(self.tcx, enum_id);
index 1641623b9cb327c7aa1ed9195de83771e898eac7..bea776eb20928659a8f0ade6a447fee34812558f 100644 (file)
@@ -1690,11 +1690,11 @@ fn handle_external_def(&mut self,
               // to the trait info.
 
               let method_def_ids =
-                csearch::get_trait_method_def_ids(self.session.cstore, def_id);
+                csearch::get_trait_method_def_ids(&self.session.cstore, def_id);
               let mut interned_method_names = HashSet::new();
               for &method_def_id in method_def_ids.iter() {
                   let (method_name, explicit_self) =
-                      csearch::get_method_name_and_explicit_self(self.session.cstore,
+                      csearch::get_method_name_and_explicit_self(&self.session.cstore,
                                                                  method_def_id);
 
                   debug!("(building reduced graph for \
@@ -1743,7 +1743,7 @@ trait method '{}'",
                     crate) building type and value for {}",
                    final_ident);
             child_name_bindings.define_type(def, DUMMY_SP, is_public);
-            if csearch::get_struct_fields(self.session.cstore, def_id).len() == 0 {
+            if csearch::get_struct_fields(&self.session.cstore, def_id).len() == 0 {
                 child_name_bindings.define_value(def, DUMMY_SP, is_public);
             }
             self.structs.insert(def_id);
@@ -1775,7 +1775,7 @@ fn build_reduced_graph_for_external_crate_def(&mut self,
                     DefForeignMod(def_id) => {
                         // Foreign modules have no names. Recur and populate
                         // eagerly.
-                        csearch::each_child_of_item(self.session.cstore,
+                        csearch::each_child_of_item(&self.session.cstore,
                                                     def_id,
                                                     |def_like,
                                                      child_ident,
@@ -1805,11 +1805,11 @@ fn build_reduced_graph_for_external_crate_def(&mut self,
             }
             DlImpl(def) => {
                 // We only process static methods of impls here.
-                match csearch::get_type_name_if_impl(self.session.cstore, def) {
+                match csearch::get_type_name_if_impl(&self.session.cstore, def) {
                     None => {}
                     Some(final_ident) => {
                         let static_methods_opt =
-                            csearch::get_static_methods_if_impl(self.session.cstore, def);
+                            csearch::get_static_methods_if_impl(&self.session.cstore, def);
                         match static_methods_opt {
                             Some(ref static_methods) if
                                 static_methods.len() >= 1 => {
@@ -1910,7 +1910,7 @@ fn populate_external_module(&mut self, module: @Module) {
             Some(def_id) => def_id,
         };
 
-        csearch::each_child_of_item(self.session.cstore,
+        csearch::each_child_of_item(&self.session.cstore,
                                     def_id,
                                     |def_like, child_ident, visibility| {
             debug!("(populating external module) ... found ident: {}",
@@ -1936,7 +1936,7 @@ fn populate_module_if_necessary(&mut self, module: @Module) {
     /// crate.
     fn build_reduced_graph_for_external_crate(&mut self,
                                               root: @Module) {
-        csearch::each_top_level_item_of_crate(self.session.cstore,
+        csearch::each_top_level_item_of_crate(&self.session.cstore,
                                               root.def_id
                                                   .get()
                                                   .unwrap()
index 6dff780cc3c883a293fa5e21a0af7a76101ddddd..56ceb867735da7f84590bfee93214325e0a55910 100644 (file)
@@ -246,7 +246,7 @@ fn get_extern_rust_fn(ccx: &CrateContext, inputs: &[ty::t], output: ty::t,
     }
 
     let f = decl_rust_fn(ccx, false, inputs, output, name);
-    csearch::get_item_attrs(ccx.tcx.cstore, did, |meta_items| {
+    csearch::get_item_attrs(&ccx.sess().cstore, did, |meta_items| {
         set_llvm_fn_attrs(meta_items.iter().map(|&x| attr::mk_attr(x)).to_owned_vec(), f)
     });
 
@@ -555,7 +555,7 @@ pub fn get_res_dtor(ccx: &CrateContext,
         get_item_val(ccx, did.node)
     } else {
         let tcx = ccx.tcx;
-        let name = csearch::get_symbol(ccx.sess().cstore, did);
+        let name = csearch::get_symbol(&ccx.sess().cstore, did);
         let class_ty = ty::subst_tps(tcx,
                                      substs,
                                      None,
@@ -874,7 +874,7 @@ pub fn fail_if_zero<'a>(
 }
 
 pub fn trans_external_path(ccx: &CrateContext, did: ast::DefId, t: ty::t) -> ValueRef {
-    let name = csearch::get_symbol(ccx.sess().cstore, did);
+    let name = csearch::get_symbol(&ccx.sess().cstore, did);
     match ty::get(t).sty {
         ty::ty_bare_fn(ref fn_ty) => {
             match fn_ty.abis.for_target(ccx.sess().targ_cfg.os,
@@ -1966,7 +1966,7 @@ pub fn get_item_val(ccx: &CrateContext, id: ast::NodeId) -> ValueRef {
                                 match external_srcs.get().find(&i.id) {
                                     Some(&did) => {
                                         debug!("but found in other crate...");
-                                        (csearch::get_symbol(ccx.sess().cstore,
+                                        (csearch::get_symbol(&ccx.sess().cstore,
                                                              did), false)
                                     }
                                     None => (sym, true)
@@ -2394,7 +2394,7 @@ pub fn decl_crate_map(sess: &Session, mapmeta: LinkMeta,
     let targ_cfg = sess.targ_cfg;
     let int_type = Type::int(targ_cfg.arch);
     let mut n_subcrates = 1;
-    let cstore = sess.cstore;
+    let cstore = &sess.cstore;
     while cstore.have_crate_data(n_subcrates) { n_subcrates += 1; }
     let is_top = !sess.building_library.get() || sess.opts.cg.gen_crate_map;
     let sym_name = if is_top {
@@ -2432,7 +2432,7 @@ pub fn fill_crate_map(ccx: &CrateContext, map: ValueRef) {
                 llvm::LLVMConstPointerCast(get_item_val(ccx, did.node),
                                            ccx.int_type.ptr_to().to_ref())
             } else {
-                let name = csearch::get_symbol(ccx.sess().cstore, did);
+                let name = csearch::get_symbol(&ccx.sess().cstore, did);
                 let global = name.with_c_str(|buf| {
                     llvm::LLVMAddGlobal(ccx.llmod, ccx.int_type.to_ref(), buf)
                 });
@@ -2462,7 +2462,7 @@ pub fn crate_ctxt_to_encode_parms<'r>(cx: &'r CrateContext, ie: encoder::EncodeI
             item_symbols: item_symbols,
             non_inlineable_statics: &cx.non_inlineable_statics,
             link_meta: link_meta,
-            cstore: cx.sess().cstore,
+            cstore: &cx.sess().cstore,
             encode_inlined_item: ie,
         }
 }
index d013c8fa1b93c8a141a67c5812ca82a9a5e91921..20385c971020bb9eee6c205e4e52c2bddb2afab3 100644 (file)
@@ -581,7 +581,7 @@ fn get_val<'a>(bcx: &'a Block<'a>, did: ast::DefId, const_ty: ty::t)
                     unsafe {
                         let llty = type_of::type_of(bcx.ccx(), const_ty);
                         let symbol = csearch::get_symbol(
-                            bcx.ccx().sess().cstore,
+                            &bcx.ccx().sess().cstore,
                             did);
                         let llval = symbol.with_c_str(|buf| {
                                 llvm::LLVMAddGlobal(bcx.ccx().llmod,
index 550306a955b51b88aebab5651672debcddd0900c..aa92cf30498ca3dd1562e148206cb73044fff6da 100644 (file)
@@ -13,7 +13,6 @@
 use back::svh::Svh;
 use driver::session::Session;
 use metadata::csearch;
-use metadata;
 use middle::const_eval;
 use middle::lang_items::{ExchangeHeapLangItem, OpaqueStructLangItem};
 use middle::lang_items::{TyDescStructLangItem, TyVisitorTraitLangItem};
@@ -259,7 +258,6 @@ pub struct ctxt {
     // quite often.
     interner: RefCell<FnvHashMap<intern_key, ~t_box_>>,
     next_id: Cell<uint>,
-    cstore: @metadata::cstore::CStore,
     sess: Session,
     def_map: resolve::DefMap,
 
@@ -1093,7 +1091,6 @@ pub fn mk_ctxt(s: Session,
         diag: s.diagnostic(),
         interner: RefCell::new(FnvHashMap::new()),
         next_id: Cell::new(primitives::LAST_PRIMITIVE_ID),
-        cstore: s.cstore,
         sess: s,
         def_map: dm,
         region_maps: region_maps,
@@ -3806,7 +3803,7 @@ pub fn trait_method_def_ids(cx: &ctxt, id: ast::DefId) -> @Vec<DefId> {
                                      id,
                                      trait_method_def_ids.get(),
                                      || {
-        @csearch::get_trait_method_def_ids(cx.cstore, id)
+        @csearch::get_trait_method_def_ids(&cx.sess.cstore, id)
     })
 }
 
@@ -4175,7 +4172,7 @@ pub fn each_attr(tcx: &ctxt, did: DefId, f: |@MetaItem| -> bool) -> bool {
         item.attrs.iter().advance(|attr| f(attr.node.value))
     } else {
         let mut cont = true;
-        csearch::get_item_attrs(tcx.cstore, did, |meta_items| {
+        csearch::get_item_attrs(&tcx.sess.cstore, did, |meta_items| {
             if cont {
                 cont = meta_items.iter().advance(|ptrptr| f(*ptrptr));
             }
@@ -4246,38 +4243,36 @@ pub fn lookup_field_type(tcx: &ctxt,
 // Look up the list of field names and IDs for a given struct
 // Fails if the id is not bound to a struct.
 pub fn lookup_struct_fields(cx: &ctxt, did: ast::DefId) -> Vec<field_ty> {
-  if did.krate == ast::LOCAL_CRATE {
-      {
-          match cx.map.find(did.node) {
-           Some(ast_map::NodeItem(i)) => {
-             match i.node {
-                ast::ItemStruct(struct_def, _) => {
-                   struct_field_tys(struct_def.fields.as_slice())
-                }
-                _ => cx.sess.bug("struct ID bound to non-struct")
-             }
-           }
-           Some(ast_map::NodeVariant(ref variant)) => {
-              match (*variant).node.kind {
-                ast::StructVariantKind(struct_def) => {
-                  struct_field_tys(struct_def.fields.as_slice())
+    if did.krate == ast::LOCAL_CRATE {
+        match cx.map.find(did.node) {
+            Some(ast_map::NodeItem(i)) => {
+                match i.node {
+                    ast::ItemStruct(struct_def, _) => {
+                        struct_field_tys(struct_def.fields.as_slice())
+                    }
+                    _ => cx.sess.bug("struct ID bound to non-struct")
                 }
-                _ => {
-                  cx.sess.bug("struct ID bound to enum variant that isn't \
-                               struct-like")
+            }
+            Some(ast_map::NodeVariant(ref variant)) => {
+                match (*variant).node.kind {
+                    ast::StructVariantKind(struct_def) => {
+                        struct_field_tys(struct_def.fields.as_slice())
+                    }
+                    _ => {
+                        cx.sess.bug("struct ID bound to enum variant that \
+                                    isn't struct-like")
+                    }
                 }
-              }
-           }
-           _ => {
-               cx.sess.bug(
-                   format!("struct ID not bound to an item: {}",
+            }
+            _ => {
+                cx.sess.bug(
+                    format!("struct ID not bound to an item: {}",
                         cx.map.node_to_str(did.node)));
-           }
-          }
-      }
-  } else {
-    return csearch::get_struct_fields(cx.sess.cstore, did);
-  }
+            }
+        }
+    } else {
+        csearch::get_struct_fields(&cx.sess.cstore, did)
+    }
 }
 
 pub fn lookup_struct_field(cx: &ctxt,
@@ -4650,7 +4645,7 @@ pub fn item_variances(tcx: &ctxt, item_id: ast::DefId) -> @ItemVariances {
     let mut item_variance_map = tcx.item_variance_map.borrow_mut();
     lookup_locally_or_in_crate_store(
         "item_variance_map", item_id, item_variance_map.get(),
-        || @csearch::get_item_variances(tcx.cstore, item_id))
+        || @csearch::get_item_variances(&tcx.sess.cstore, item_id))
 }
 
 /// Records a trait-to-implementation mapping.
@@ -4687,7 +4682,7 @@ pub fn populate_implementations_for_type_if_necessary(tcx: &ctxt,
         }
     }
 
-    csearch::each_implementation_for_type(tcx.sess.cstore, type_id,
+    csearch::each_implementation_for_type(&tcx.sess.cstore, type_id,
             |implementation_def_id| {
         let implementation = @csearch::get_impl(tcx, implementation_def_id);
 
@@ -4756,7 +4751,7 @@ pub fn populate_implementations_for_trait_if_necessary(
         }
     }
 
-    csearch::each_implementation_for_trait(tcx.sess.cstore, trait_id,
+    csearch::each_implementation_for_trait(&tcx.sess.cstore, trait_id,
             |implementation_def_id| {
         let implementation = @csearch::get_impl(tcx, implementation_def_id);
 
@@ -4810,7 +4805,7 @@ pub fn trait_id_of_impl(tcx: &ctxt,
 pub fn trait_of_method(tcx: &ctxt, def_id: ast::DefId)
                        -> Option<ast::DefId> {
     if def_id.krate != LOCAL_CRATE {
-        return csearch::get_trait_of_method(tcx.cstore, def_id, tcx);
+        return csearch::get_trait_of_method(&tcx.sess.cstore, def_id, tcx);
     }
     let method;
     {
index bd61190a79f1832403477112eb50470db6469264..894c70c7b61194f2592a3cd1f55d5b63d7fe3ec8 100644 (file)
@@ -450,7 +450,7 @@ fn check_implementation_coherence_of(&self, trait_def_id: DefId) {
                             session.span_note(self.span_of_impl(implementation_b),
                                               "note conflicting implementation here");
                         } else {
-                            let crate_store = self.crate_context.tcx.sess.cstore;
+                            let crate_store = &self.crate_context.tcx.sess.cstore;
                             let cdata = crate_store.get_crate_data(implementation_b.did.krate);
                             session.note(
                                 "conflicting implementation in crate `" + cdata.name + "`");
@@ -468,7 +468,7 @@ fn iter_impls_of_trait(&self, trait_def_id: DefId, f: |@Impl|) {
             return;
         }
 
-        let crate_store = self.crate_context.tcx.sess.cstore;
+        let crate_store = &self.crate_context.tcx.sess.cstore;
         csearch::each_implementation_for_trait(crate_store, trait_def_id, |impl_def_id| {
             let implementation = @csearch::get_impl(self.crate_context.tcx, impl_def_id);
             let _ = lookup_item_type(self.crate_context.tcx, implementation.did);
@@ -682,7 +682,7 @@ fn add_external_impl(&self,
     fn add_external_crates(&self) {
         let mut impls_seen = HashSet::new();
 
-        let crate_store = self.crate_context.tcx.sess.cstore;
+        let crate_store = &self.crate_context.tcx.sess.cstore;
         crate_store.iter_crate_data(|crate_number, _crate_metadata| {
             each_impl(crate_store, crate_number, |def_id| {
                 assert_eq!(crate_number, def_id.krate);