diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs index e9535ba6396..de5559c8b14 100644 --- a/src/librustc_driver/lib.rs +++ b/src/librustc_driver/lib.rs @@ -190,63 +190,8 @@ pub mod rustc_trans { } fn load_backend_from_dylib(sess: &Session, backend_name: &str) -> Box { - use std::sync::mpsc; use std::path::Path; - use syntax::symbol::Symbol; - use rustc::session::config::OutputFilenames; - use rustc::ty::TyCtxt; - use rustc::ty::maps::Providers; - use rustc::middle::cstore::MetadataLoader; - use rustc::dep_graph::DepGraph; use rustc_metadata::dynamic_lib::DynamicLibrary; - /// This prevents the dylib from being unloaded when there is still a TransCrate open - struct ExternTransCrate { - _lib: DynamicLibrary, - trans: Box, - } - - impl Drop for ExternTransCrate { - fn drop(&mut self) { - // Make sure trans gets dropped before _lib as bad things happen otherwise - self.trans = Box::new(::rustc_trans_utils::trans_crate::DummyTransCrate) - } - } - - impl TransCrate for ExternTransCrate { - fn print(&self, req: PrintRequest, sess: &Session) { - self.trans.print(req, sess); - } - fn target_features(&self, sess: &Session) -> Vec { - self.trans.target_features((sess)) - } - - fn metadata_loader(&self) -> Box { - self.trans.metadata_loader() - } - fn provide(&self, providers: &mut Providers) { - self.trans.provide(providers) - } - fn provide_extern(&self, providers: &mut Providers) { - self.trans.provide_extern(providers) - } - fn trans_crate<'a, 'tcx>( - &self, - tcx: TyCtxt<'a, 'tcx, 'tcx>, - rx: mpsc::Receiver> - ) -> Box { - self.trans.trans_crate(tcx, rx) - } - - fn join_trans_and_link( - &self, - trans: Box, - sess: &Session, - dep_graph: &DepGraph, - outputs: &OutputFilenames, - ) -> Result<(), CompileIncomplete> { - self.trans.join_trans_and_link(trans, sess, dep_graph, outputs) - } - } match DynamicLibrary::open(Some(Path::new(backend_name))) { Ok(lib) => { @@ -260,10 +205,8 @@ fn load_backend_from_dylib(sess: &Session, backend_name: &str) -> Box {