about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-07-07 18:33:59 -0700
committerBrian Anderson <banderson@mozilla.com>2011-07-08 09:37:00 -0700
commit4bfa269fe7ce48c7cd54404b4f74c48e0e7895ea (patch)
tree3d0d7d8cbdd9a6292662ac5450332bb4e810c519 /src
parent1386420cad0ed926de268dff0648a815c317c032 (diff)
downloadrust-4bfa269fe7ce48c7cd54404b4f74c48e0e7895ea.tar.gz
rust-4bfa269fe7ce48c7cd54404b4f74c48e0e7895ea.zip
Move used_libraries from session to cstore
Diffstat (limited to 'src')
-rw-r--r--src/comp/driver/rustc.rs7
-rw-r--r--src/comp/driver/session.rs18
-rw-r--r--src/comp/metadata/creader.rs3
-rw-r--r--src/comp/metadata/cstore.rs15
4 files changed, 21 insertions, 22 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs
index 60ab1c741a5..27389e98762 100644
--- a/src/comp/driver/rustc.rs
+++ b/src/comp/driver/rustc.rs
@@ -355,7 +355,7 @@ fn build_session(@session::options sopts) -> session::session {
     auto target_cfg = build_target_config();
     auto cstore = cstore::mk_cstore();
     ret session::session(target_cfg, sopts, cstore,
-                         [], [], codemap::new_codemap(), 0u);
+                         [], codemap::new_codemap(), 0u);
 }
 
 fn parse_pretty(session::session sess, &str name) -> pp_mode {
@@ -517,7 +517,8 @@ fn main(vec[str] args) {
         };
     }
 
-    for (str cratepath in cstore::get_used_crate_files(sess.get_cstore())) {
+    auto cstore = sess.get_cstore();
+    for (str cratepath in cstore::get_used_crate_files(cstore)) {
         auto dir = fs::dirname(cratepath);
         if (dir != "") {
             gcc_args += ["-L" + dir];
@@ -527,7 +528,7 @@ fn main(vec[str] args) {
     }
 
     gcc_args += sess.get_used_link_args();
-    auto used_libs = sess.get_used_libraries();
+    auto used_libs = cstore::get_used_libraries(cstore);
     for (str l in used_libs) {
         gcc_args += ["-l" + l];
     }
diff --git a/src/comp/driver/session.rs b/src/comp/driver/session.rs
index 76429a4f13a..8d28f9046ef 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,
-            mutable vec[str] used_libraries,
             mutable vec[str] used_link_args,
             codemap::codemap cm,
             mutable uint err_count) {
@@ -105,23 +104,6 @@ obj session(@config targ_cfg,
     fn get_used_link_args() -> vec[str] {
         ret used_link_args;
     }
-    fn add_used_library(&str lib) -> bool {
-        if (lib == "") {
-            ret false;
-        }
-        // A program has a small number of libraries, so a vector is probably
-        // a good data structure in here.
-        for (str l in used_libraries) {
-            if (l == lib) {
-                ret false;
-            }
-        }
-        used_libraries += [lib];
-        ret true;
-    }
-    fn get_used_libraries() -> vec[str] {
-       ret used_libraries;
-    }
     fn get_codemap() -> codemap::codemap { ret cm; }
     fn lookup_pos(uint pos) -> codemap::loc {
         ret codemap::lookup_pos(cm, pos);
diff --git a/src/comp/metadata/creader.rs b/src/comp/metadata/creader.rs
index f440773a117..6b1512b02cc 100644
--- a/src/comp/metadata/creader.rs
+++ b/src/comp/metadata/creader.rs
@@ -180,7 +180,8 @@ fn visit_item(env e, &@ast::item i) {
                 m.abi != ast::native_abi_cdecl) {
                 ret;
             }
-            if (!e.sess.add_used_library(m.native_name)) {
+            auto cstore = e.sess.get_cstore();
+            if (!cstore::add_used_library(cstore, m.native_name)) {
                 ret;
             }
             for (ast::attribute a in
diff --git a/src/comp/metadata/cstore.rs b/src/comp/metadata/cstore.rs
index e3ff7757bcb..270179198aa 100644
--- a/src/comp/metadata/cstore.rs
+++ b/src/comp/metadata/cstore.rs
@@ -38,6 +38,21 @@ fn get_used_crate_files(&cstore cstore) -> vec[str] {
     ret cstore.used_crate_files;
 }
 
+fn add_used_library(&cstore cstore, &str lib) -> bool {
+    if (lib == "") { ret false; }
+
+    if (vec::member(lib, cstore.used_libraries)) {
+        ret false;
+    }
+
+    cstore.used_libraries += [lib];
+    ret true;
+}
+
+fn get_used_libraries(&cstore cstore) -> vec[str] {
+    ret cstore.used_libraries;
+}
+
 // Local Variables:
 // mode: rust
 // fill-column: 78;