Delay wrapping Definitions into a RefCell around LocalCrateReader.
This commit is contained in:
parent
8d3531d3db
commit
e919f25180
4 changed files with 23 additions and 19 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue