about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-07-07 22:18:38 -0700
committerBrian Anderson <banderson@mozilla.com>2011-07-08 09:37:01 -0700
commit7ae711fc0305c8c0972f15e962f5e767e9b6edbe (patch)
tree922636d2f76efb60aaf083564c312d277b1b595a /src/comp
parentcc2924068f017af5232fbc215406707dc9b50035 (diff)
Begin splitting metadata::decoder into decoding and crate search modules
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/metadata/csearch.rs43
-rw-r--r--src/comp/middle/resolve.rs4
-rw-r--r--src/comp/middle/trans.rs10
-rw-r--r--src/comp/middle/ty.rs7
-rw-r--r--src/comp/middle/typeck.rs4
-rw-r--r--src/comp/rustc.rc3
6 files changed, 57 insertions, 14 deletions
diff --git a/src/comp/metadata/csearch.rs b/src/comp/metadata/csearch.rs
new file mode 100644
index 00000000000..f4f1070069a
--- /dev/null
+++ b/src/comp/metadata/csearch.rs
@@ -0,0 +1,43 @@
+import driver::session;
+import syntax::ast;
+import middle::ty;
+import std::io;
+
+fn get_symbol(session::session sess, ast::def_id def) -> str {
+    decoder::get_symbol(sess, def)
+}
+
+fn get_tag_variants(ty::ctxt ctx, ast::def_id def) -> ty::variant_info[] {
+    decoder::get_tag_variants(ctx, def)
+}
+
+fn get_type(ty::ctxt tcx, ast::def_id def) -> ty::ty_param_count_and_ty {
+    decoder::get_type(tcx, def)
+}
+
+fn get_type_param_count(ty::ctxt tcx, &ast::def_id def) -> uint {
+    decoder::get_type_param_count(tcx, def)
+}
+
+fn lookup_defs(session::session sess, ast::crate_num cnum,
+               vec[ast::ident] path) -> vec[ast::def] {
+    decoder::lookup_defs(sess, cnum, path)
+}
+
+fn get_crate_attributes(&vec[u8] data) -> ast::attribute[] {
+    decoder::get_crate_attributes(data)
+}
+
+fn list_crate_metadata(vec[u8] data, io::writer out) {
+    decoder::list_crate_metadata(data, out)
+}
+
+
+// Local Variables:
+// mode: rust
+// fill-column: 78;
+// indent-tabs-mode: nil
+// c-basic-offset: 4
+// buffer-file-coding-system: utf-8-unix
+// compile-command: "make -k -C $RBUILD 2>&1 | sed -e 's/\\/x\\//x:\\//g'";
+// End:
diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs
index 668ef7596bd..caed0e6bff9 100644
--- a/src/comp/middle/resolve.rs
+++ b/src/comp/middle/resolve.rs
@@ -7,7 +7,7 @@ import ast::def_id;
 import ast::node_id;
 import ast::local_def;
 
-import metadata::decoder;
+import metadata::csearch;
 import metadata::cstore;
 import driver::session::session;
 import util::common::new_def_hash;
@@ -1143,7 +1143,7 @@ fn ns_for_def(def d) -> namespace {
 
 fn lookup_external(&env e, int cnum, vec[ident] ids, namespace ns) ->
    option::t[def] {
-    for (def d in decoder::lookup_defs(e.sess, cnum, ids)) {
+    for (def d in csearch::lookup_defs(e.sess, cnum, ids)) {
         e.ext_map.insert(ast::def_id_of_def(d), ids);
         if (ns == ns_for_def(d)) { ret some(d); }
     }
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 7e92991d38d..985381ecea1 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -65,7 +65,7 @@ import link::mangle_internal_name_by_path_and_seq;
 import link::mangle_exported_name;
 import metadata::tyencode;
 import metadata::creader;
-import metadata::decoder;
+import metadata::csearch;
 import metadata::cstore;
 import util::ppaux::ty_to_str;
 import util::ppaux::ty_to_short_str;
@@ -2220,12 +2220,12 @@ fn trans_res_drop(@block_ctxt cx, ValueRef rs, &ast::def_id did,
             case (_) { ccx.tcx.sess.bug("internal error in trans_res_drop") }
         }
     } else {
-        auto params = decoder::get_type_param_count(ccx.tcx, did);
+        auto params = csearch::get_type_param_count(ccx.tcx, did);
         auto f_t = type_of_fn(ccx, cx.sp, ast::proto_fn,
                               ~[rec(mode=ty::mo_alias(false), ty=inner_t)],
                               ty::mk_nil(ccx.tcx), params);
         get_extern_const(ccx.externs, ccx.llmod,
-                         decoder::get_symbol(ccx.sess, did),
+                         csearch::get_symbol(ccx.sess, did),
                          T_fn_pair(ccx.tn, f_t))
     };
     auto dtor_addr = cx.build.Load
@@ -4942,7 +4942,7 @@ fn lval_val(&@block_ctxt cx, ValueRef val) -> lval_result {
 fn trans_external_path(&@block_ctxt cx, &ast::def_id did,
                        &ty::ty_param_count_and_ty tpt) -> lval_result {
     auto lcx = cx.fcx.lcx;
-    auto name = decoder::get_symbol(lcx.ccx.sess, did);
+    auto name = csearch::get_symbol(lcx.ccx.sess, did);
     auto v =
         get_extern_const(lcx.ccx.externs, lcx.ccx.llmod, name,
                          type_of_ty_param_count_and_ty(lcx, cx.sp, tpt));
@@ -4988,7 +4988,7 @@ fn lookup_discriminant(&@local_ctxt lcx, &ast::def_id tid, &ast::def_id vid)
             // It's an external discriminant that we haven't seen yet.
 
             assert (vid._0 != ast::local_crate);
-            auto sym = decoder::get_symbol(lcx.ccx.sess, vid);
+            auto sym = csearch::get_symbol(lcx.ccx.sess, vid);
             auto gvar =
                 llvm::LLVMAddGlobal(lcx.ccx.llmod, T_int(), str::buf(sym));
             llvm::LLVMSetLinkage(gvar,
diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs
index 1cd8a8756e9..7d3ac38f1ab 100644
--- a/src/comp/middle/ty.rs
+++ b/src/comp/middle/ty.rs
@@ -21,8 +21,7 @@ import ast::controlflow;
 import ast::path_to_str;
 import ast::spanned;
 import syntax::codemap::span;
-import metadata::creader;
-import metadata::decoder;
+import metadata::csearch;
 import util::common::*;
 import syntax::util::interner;
 import util::ppaux::ty_to_str;
@@ -2814,7 +2813,7 @@ fn def_has_ty_params(&ast::def def) -> bool {
 type variant_info = rec(ty::t[] args, ty::t ctor_ty, ast::def_id id);
 
 fn tag_variants(&ctxt cx, &ast::def_id id) -> variant_info[] {
-    if (ast::local_crate != id._0) { ret decoder::get_tag_variants(cx, id); }
+    if (ast::local_crate != id._0) { ret csearch::get_tag_variants(cx, id); }
     auto item = alt (cx.items.find(id._1)) {
         case (some(?i)) { i }
         case (none) {
@@ -2875,7 +2874,7 @@ fn lookup_item_type(ctxt cx, ast::def_id did) -> ty_param_count_and_ty {
     alt (cx.tcache.find(did)) {
         case (some(?tpt)) { ret tpt; }
         case (none) {
-            auto tyt = decoder::get_type(cx, did);
+            auto tyt = csearch::get_type(cx, did);
             cx.tcache.insert(did, tyt);
             ret tyt;
         }
diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs
index f1dc08001cf..3f4afe0f385 100644
--- a/src/comp/middle/typeck.rs
+++ b/src/comp/middle/typeck.rs
@@ -5,7 +5,7 @@ import ast::local_def;
 import ast::path_to_str;
 import ast::respan;
 import syntax::walk;
-import metadata::decoder;
+import metadata::csearch;
 import driver::session;
 import util::common;
 import syntax::codemap::span;
@@ -522,7 +522,7 @@ mod collect {
     fn getter(@ctxt cx, &ast::def_id id) -> ty::ty_param_count_and_ty {
         if (id._0 != ast::local_crate) {
             // This is a type we need to load in from the crate reader.
-            ret decoder::get_type(cx.tcx, id);
+            ret csearch::get_type(cx.tcx, id);
         }
         auto it = cx.tcx.items.find(id._1);
         auto tpt;
diff --git a/src/comp/rustc.rc b/src/comp/rustc.rc
index 62e9a959857..174e9298c05 100644
--- a/src/comp/rustc.rc
+++ b/src/comp/rustc.rc
@@ -79,9 +79,9 @@ mod back {
 mod metadata {
     export tyencode;
     export encoder;
-    export decoder;
     export creader;
     export cstore;
+    export csearch;
 
     mod common;
     mod tyencode;
@@ -90,6 +90,7 @@ mod metadata {
     mod decoder;
     mod creader;
     mod cstore;
+    mod csearch;
 }
 
 mod driver {