From 4bfa269fe7ce48c7cd54404b4f74c48e0e7895ea Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 7 Jul 2011 18:33:59 -0700 Subject: [PATCH] Move used_libraries from session to cstore --- src/comp/driver/rustc.rs | 7 ++++--- src/comp/driver/session.rs | 18 ------------------ src/comp/metadata/creader.rs | 3 ++- src/comp/metadata/cstore.rs | 15 +++++++++++++++ 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs index 60ab1c741a56..27389e98762c 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 76429a4f13a9..8d28f9046ef1 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 f440773a1170..6b1512b02cc9 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 e3ff7757bcba..270179198aae 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;