From f62faa89edb16a340a0be471037301ebf1457919 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Sun, 22 Dec 2013 14:51:06 -0800 Subject: [PATCH] librustc: De-`@mut` `outputs` in the session --- src/librustc/back/link.rs | 6 ++++-- src/librustc/back/lto.rs | 3 ++- src/librustc/driver/driver.rs | 4 ++-- src/librustc/driver/session.rs | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs index f85d1f1d825..a85d5f35b5a 100644 --- a/src/librustc/back/link.rs +++ b/src/librustc/back/link.rs @@ -208,8 +208,9 @@ pub mod write { // Emit the bytecode if we're either saving our temporaries or // emitting an rlib. Whenever an rlib is create, the bytecode is // inserted into the archive in order to allow LTO against it. + let outputs = sess.outputs.borrow(); if sess.opts.save_temps || - sess.outputs.iter().any(|&o| o == session::OutputRlib) { + outputs.get().iter().any(|&o| o == session::OutputRlib) { output.with_extension("bc").with_c_str(|buf| { llvm::LLVMWriteBitcodeToFile(llmod, buf); }) @@ -745,7 +746,8 @@ pub fn link_binary(sess: Session, out_filename: &Path, lm: &LinkMeta) -> ~[Path] { let mut out_filenames = ~[]; - for &output in sess.outputs.iter() { + let outputs = sess.outputs.borrow(); + for &output in outputs.get().iter() { let out_file = link_binary_output(sess, trans, output, obj_filename, out_filename, lm); out_filenames.push(out_file); diff --git a/src/librustc/back/lto.rs b/src/librustc/back/lto.rs index 697b2a6686b..2425b36687e 100644 --- a/src/librustc/back/lto.rs +++ b/src/librustc/back/lto.rs @@ -20,7 +20,8 @@ use std::libc; pub fn run(sess: session::Session, llmod: ModuleRef, tm: TargetMachineRef, reachable: &[~str]) { // Make sure we actually can run LTO - for output in sess.outputs.iter() { + let outputs = sess.outputs.borrow(); + for output in outputs.get().iter() { match *output { session::OutputExecutable | session::OutputStaticlib => {} _ => { diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index 9eff923e651..2b9acb1db9d 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -167,7 +167,7 @@ pub fn phase_2_configure_and_expand(sess: Session, let time_passes = sess.time_passes(); sess.building_library.set(session::building_library(sess.opts, &crate)); - *sess.outputs = session::collect_outputs(sess.opts, crate.attrs); + sess.outputs.set(session::collect_outputs(sess.opts, crate.attrs)); time(time_passes, "gated feature checking", (), |_| front::feature_gate::check_crate(sess, &crate)); @@ -882,7 +882,7 @@ pub fn build_session_(sopts: @session::options, working_dir: os::getcwd(), lints: RefCell::new(HashMap::new()), node_id: Cell::new(1), - outputs: @mut ~[], + outputs: @RefCell::new(~[]), } } diff --git a/src/librustc/driver/session.rs b/src/librustc/driver/session.rs index 8bcefbd7c76..e3167dee068 100644 --- a/src/librustc/driver/session.rs +++ b/src/librustc/driver/session.rs @@ -215,7 +215,7 @@ pub struct Session_ { lints: RefCell>, node_id: Cell, - outputs: @mut ~[OutputStyle], + outputs: @RefCell<~[OutputStyle]>, } pub type Session = @Session_;