diff options
| author | Ms2ger <Ms2ger@gmail.com> | 2016-05-10 15:34:52 +0200 |
|---|---|---|
| committer | Ms2ger <Ms2ger@gmail.com> | 2016-05-10 19:36:08 +0200 |
| commit | e919f251800b792e15b3c72cdfb19e539cd74971 (patch) | |
| tree | 35ef70e2e53b44b6a3daa8dfcd0285111d3df678 | |
| parent | 8d3531d3db513bd71ad1ac041ad9a2172ec34012 (diff) | |
| download | rust-e919f251800b792e15b3c72cdfb19e539cd74971.tar.gz rust-e919f251800b792e15b3c72cdfb19e539cd74971.zip | |
Delay wrapping Definitions into a RefCell around LocalCrateReader.
| -rw-r--r-- | src/librustc_driver/driver.rs | 13 | ||||
| -rw-r--r-- | src/librustc_driver/test.rs | 9 | ||||
| -rw-r--r-- | src/librustdoc/core.rs | 9 | ||||
| -rw-r--r-- | src/test/run-make/execution-engine/test.rs | 11 |
4 files changed, 23 insertions, 19 deletions
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 8841480f7f6..3f9fa0a23c2 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -142,13 +142,13 @@ pub fn compile_input(sess: &Session, let dep_graph = DepGraph::new(sess.opts.build_dep_graph()); // Collect defintions for def ids. - let defs = &RefCell::new(time(sess.time_passes(), - "collecting defs", - || hir_map::collect_definitions(&expanded_crate))); + let mut defs = time(sess.time_passes(), + "collecting defs", + || hir_map::collect_definitions(&expanded_crate)); time(sess.time_passes(), "external crate/lib resolution", - || LocalCrateReader::new(sess, &cstore, &defs.borrow(), &expanded_crate, &id) + || LocalCrateReader::new(sess, &cstore, &defs, &expanded_crate, &id) .read_crates(&dep_graph)); time(sess.time_passes(), @@ -156,8 +156,8 @@ pub fn compile_input(sess: &Session, || lint::check_ast_crate(sess, &expanded_crate)); let (analysis, resolutions, mut hir_forest) = { - let defs = &mut *defs.borrow_mut(); - lower_and_resolve(sess, &id, defs, &expanded_crate, dep_graph, control.make_glob_map) + lower_and_resolve(sess, &id, &mut defs, &expanded_crate, dep_graph, + control.make_glob_map) }; // Discard MTWT tables that aren't required past lowering to HIR. @@ -165,6 +165,7 @@ pub fn compile_input(sess: &Session, syntax::ext::mtwt::clear_tables(); } + let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); // Construct the HIR map diff --git a/src/librustc_driver/test.rs b/src/librustc_driver/test.rs index ed9a092b6ff..59713c66afc 100644 --- a/src/librustc_driver/test.rs +++ b/src/librustc_driver/test.rs @@ -120,15 +120,16 @@ fn test_env<F>(source_string: &str, let dep_graph = DepGraph::new(false); let krate = driver::assign_node_ids(&sess, krate); - let defs = &RefCell::new(hir_map::collect_definitions(&krate)); - LocalCrateReader::new(&sess, &cstore, &defs.borrow(), &krate, "test_crate").read_crates(&dep_graph); + let mut defs = hir_map::collect_definitions(&krate); + LocalCrateReader::new(&sess, &cstore, &defs, &krate, "test_crate").read_crates(&dep_graph); let _ignore = dep_graph.in_ignore(); let (_, resolutions, mut hir_forest) = { - let (defs, dep_graph) = (&mut *defs.borrow_mut(), dep_graph.clone()); - driver::lower_and_resolve(&sess, "test-crate", defs, &krate, dep_graph, MakeGlobMap::No) + driver::lower_and_resolve(&sess, "test-crate", &mut defs, &krate, dep_graph.clone(), + MakeGlobMap::No) }; + let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); let ast_map = hir_map::map_crate(&mut hir_forest, defs); diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index 77a780805a6..857a1176f49 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -153,15 +153,16 @@ pub fn run_core(search_paths: SearchPaths, let krate = driver::assign_node_ids(&sess, krate); let dep_graph = DepGraph::new(false); - let defs = &RefCell::new(hir_map::collect_definitions(&krate)); - LocalCrateReader::new(&sess, &cstore, &defs.borrow(), &krate, &name).read_crates(&dep_graph); + let mut defs = hir_map::collect_definitions(&krate); + LocalCrateReader::new(&sess, &cstore, &defs, &krate, &name).read_crates(&dep_graph); // Lower ast -> hir and resolve. let (analysis, resolutions, mut hir_forest) = { - let defs = &mut *defs.borrow_mut(); - driver::lower_and_resolve(&sess, &name, defs, &krate, dep_graph, resolve::MakeGlobMap::No) + driver::lower_and_resolve(&sess, &name, &mut defs, &krate, dep_graph, + resolve::MakeGlobMap::No) }; + let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); let hir_map = hir_map::map_crate(&mut hir_forest, defs); diff --git a/src/test/run-make/execution-engine/test.rs b/src/test/run-make/execution-engine/test.rs index f46846c34a5..0d10f315566 100644 --- a/src/test/run-make/execution-engine/test.rs +++ b/src/test/run-make/execution-engine/test.rs @@ -240,14 +240,15 @@ fn compile_program(input: &str, sysroot: PathBuf) let dep_graph = DepGraph::new(sess.opts.build_dep_graph()); let krate = driver::assign_node_ids(&sess, krate); - let defs = RefCell::new(ast_map::collect_definitions(&krate)); - LocalCrateReader::new(&sess, &cstore, &defs.borrow(), &krate, &id).read_crates(&dep_graph); + let mut defs = ast_map::collect_definitions(&krate); + LocalCrateReader::new(&sess, &cstore, &defs, &krate, &id).read_crates(&dep_graph); let (analysis, resolutions, mut hir_forest) = { - let defs = &mut *defs.borrow_mut(); - driver::lower_and_resolve(&sess, &id, defs, &krate, dep_graph, MakeGlobMap::No) + driver::lower_and_resolve(&sess, &id, &mut defs, &krate, dep_graph, MakeGlobMap::No) }; + + let defs = &RefCell::new(defs); let arenas = ty::CtxtArenas::new(); - let ast_map = ast_map::map_crate(&mut hir_forest, &defs); + let ast_map = ast_map::map_crate(&mut hir_forest, defs); abort_on_err(driver::phase_3_run_analysis_passes( &sess, ast_map, analysis, resolutions, &arenas, &id, |
