Skip to content

Commit 0b7fb80

Browse files
authored
Auto merge of #34772 - jseyfried:cleanup_interner, r=eddyb
Start cleaning up the string interner r? @eddyb
2 parents 4a12a70 + 060b5c5 commit 0b7fb80

File tree

16 files changed

+145
-395
lines changed

16 files changed

+145
-395
lines changed

src/librustc_driver/driver.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ pub fn compile_input(sess: &Session,
211211
}
212212

213213
// Discard interned strings as they are no longer required.
214-
token::get_ident_interner().clear();
214+
token::clear_ident_interner();
215215

216216
Ok((outputs, trans))
217217
})??
@@ -480,7 +480,7 @@ pub fn phase_1_parse_input<'a>(sess: &'a Session,
480480
input: &Input)
481481
-> PResult<'a, ast::Crate> {
482482
// These may be left in an incoherent state after a previous compile.
483-
// `clear_tables` and `get_ident_interner().clear()` can be used to free
483+
// `clear_tables` and `clear_ident_interner` can be used to free
484484
// memory, but they do not restore the initial state.
485485
syntax::ext::mtwt::reset_tables();
486486
token::reset_ident_interner();

src/librustc_driver/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ use rustc::session::early_error;
9797
use syntax::{ast, json};
9898
use syntax::codemap::{CodeMap, FileLoader, RealFileLoader};
9999
use syntax::feature_gate::{GatedCfg, UnstableFeatures};
100-
use syntax::parse::{self, PResult, token};
100+
use syntax::parse::{self, PResult};
101101
use syntax_pos::MultiSpan;
102102
use errors::emitter::Emitter;
103103

@@ -201,7 +201,7 @@ pub fn run_compiler_with_file_loader<'a, L>(args: &[String],
201201
};
202202

203203
let dep_graph = DepGraph::new(sopts.build_dep_graph());
204-
let cstore = Rc::new(CStore::new(&dep_graph, token::get_ident_interner()));
204+
let cstore = Rc::new(CStore::new(&dep_graph));
205205
let codemap = Rc::new(CodeMap::with_file_loader(loader));
206206
let sess = session::build_session_with_codemap(sopts,
207207
&dep_graph,
@@ -432,7 +432,7 @@ impl<'a> CompilerCalls<'a> for RustcDefaultCalls {
432432
return None;
433433
}
434434
let dep_graph = DepGraph::new(sopts.build_dep_graph());
435-
let cstore = Rc::new(CStore::new(&dep_graph, token::get_ident_interner()));
435+
let cstore = Rc::new(CStore::new(&dep_graph));
436436
let sess = build_session(sopts.clone(),
437437
&dep_graph,
438438
None,

src/librustc_driver/test.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ fn test_env<F>(source_string: &str,
106106

107107
let dep_graph = DepGraph::new(false);
108108
let _ignore = dep_graph.in_ignore();
109-
let cstore = Rc::new(CStore::new(&dep_graph, token::get_ident_interner()));
109+
let cstore = Rc::new(CStore::new(&dep_graph));
110110
let sess = session::build_session_(options, &dep_graph, None, diagnostic_handler,
111111
Rc::new(CodeMap::new()), cstore.clone());
112112
rustc_lint::register_builtins(&mut sess.lint_store.borrow_mut(), Some(&sess));

src/librustc_metadata/creader.rs

-1
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,6 @@ impl<'a> CrateReader<'a> {
557557
let source_name = format!("<{} macros>", item.ident);
558558
let mut macros = vec![];
559559
decoder::each_exported_macro(ekrate.metadata.as_slice(),
560-
&self.cstore.intr,
561560
|name, attrs, span, body| {
562561
// NB: Don't use parse::parse_tts_from_source_str because it parses with
563562
// quote_depth > 0.

src/librustc_metadata/csearch.rs

+13-26
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
127127
{
128128
self.dep_graph.read(DepNode::MetaData(def));
129129
let cdata = self.get_crate_data(def.krate);
130-
decoder::get_adt_def(&self.intr, &cdata, def.index, tcx)
130+
decoder::get_adt_def(&cdata, def.index, tcx)
131131
}
132132

133133
fn method_arg_names(&self, did: DefId) -> Vec<String>
@@ -140,13 +140,13 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
140140
fn item_name(&self, def: DefId) -> ast::Name {
141141
self.dep_graph.read(DepNode::MetaData(def));
142142
let cdata = self.get_crate_data(def.krate);
143-
decoder::get_item_name(&self.intr, &cdata, def.index)
143+
decoder::get_item_name(&cdata, def.index)
144144
}
145145

146146
fn opt_item_name(&self, def: DefId) -> Option<ast::Name> {
147147
self.dep_graph.read(DepNode::MetaData(def));
148148
let cdata = self.get_crate_data(def.krate);
149-
decoder::maybe_get_item_name(&self.intr, &cdata, def.index)
149+
decoder::maybe_get_item_name(&cdata, def.index)
150150
}
151151

152152
fn inherent_implementations_for_type(&self, def_id: DefId) -> Vec<DefId>
@@ -176,7 +176,7 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
176176
{
177177
self.dep_graph.read(DepNode::MetaData(def));
178178
let cdata = self.get_crate_data(def.krate);
179-
decoder::get_provided_trait_methods(self.intr.clone(), &cdata, def.index, tcx)
179+
decoder::get_provided_trait_methods(&cdata, def.index, tcx)
180180
}
181181

182182
fn trait_item_def_ids(&self, def: DefId)
@@ -222,7 +222,7 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
222222
-> Vec<Rc<ty::AssociatedConst<'tcx>>> {
223223
self.dep_graph.read(DepNode::MetaData(def));
224224
let cdata = self.get_crate_data(def.krate);
225-
decoder::get_associated_consts(self.intr.clone(), &cdata, def.index, tcx)
225+
decoder::get_associated_consts(&cdata, def.index, tcx)
226226
}
227227

228228
fn impl_parent(&self, impl_def: DefId) -> Option<DefId> {
@@ -243,11 +243,7 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
243243
{
244244
self.dep_graph.read(DepNode::MetaData(def));
245245
let cdata = self.get_crate_data(def.krate);
246-
decoder::get_impl_or_trait_item(
247-
self.intr.clone(),
248-
&cdata,
249-
def.index,
250-
tcx)
246+
decoder::get_impl_or_trait_item(&cdata, def.index, tcx)
251247
}
252248

253249
fn is_const_fn(&self, did: DefId) -> bool
@@ -460,7 +456,7 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
460456
{
461457
self.dep_graph.read(DepNode::MetaData(def));
462458
let cdata = self.get_crate_data(def.krate);
463-
decoder::get_struct_field_names(&self.intr, &cdata, def.index)
459+
decoder::get_struct_field_names(&cdata, def.index)
464460
}
465461

466462
fn item_children(&self, def_id: DefId) -> Vec<ChildItem>
@@ -469,14 +465,9 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
469465
let mut result = vec![];
470466
let crate_data = self.get_crate_data(def_id.krate);
471467
let get_crate_data = |cnum| self.get_crate_data(cnum);
472-
decoder::each_child_of_item(
473-
self.intr.clone(), &crate_data,
474-
def_id.index, get_crate_data,
475-
|def, name, vis| result.push(ChildItem {
476-
def: def,
477-
name: name,
478-
vis: vis
479-
}));
468+
decoder::each_child_of_item(&crate_data, def_id.index, get_crate_data, |def, name, vis| {
469+
result.push(ChildItem { def: def, name: name, vis: vis });
470+
});
480471
result
481472
}
482473

@@ -485,13 +476,9 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
485476
let mut result = vec![];
486477
let crate_data = self.get_crate_data(cnum);
487478
let get_crate_data = |cnum| self.get_crate_data(cnum);
488-
decoder::each_top_level_item_of_crate(
489-
self.intr.clone(), &crate_data, get_crate_data,
490-
|def, name, vis| result.push(ChildItem {
491-
def: def,
492-
name: name,
493-
vis: vis
494-
}));
479+
decoder::each_top_level_item_of_crate(&crate_data, get_crate_data, |def, name, vis| {
480+
result.push(ChildItem { def: def, name: name, vis: vis });
481+
});
495482
result
496483
}
497484

src/librustc_metadata/cstore.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ use flate::Bytes;
3737
use syntax::ast;
3838
use syntax::attr;
3939
use syntax::codemap;
40-
use syntax::parse::token::IdentInterner;
4140
use syntax_pos;
4241

4342
pub use middle::cstore::{NativeLibraryKind, LinkagePreference};
@@ -106,21 +105,18 @@ pub struct CStore {
106105
used_libraries: RefCell<Vec<(String, NativeLibraryKind)>>,
107106
used_link_args: RefCell<Vec<String>>,
108107
statically_included_foreign_items: RefCell<NodeSet>,
109-
pub intr: Rc<IdentInterner>,
110108
pub visible_parent_map: RefCell<DefIdMap<DefId>>,
111109
}
112110

113111
impl CStore {
114-
pub fn new(dep_graph: &DepGraph,
115-
intr: Rc<IdentInterner>) -> CStore {
112+
pub fn new(dep_graph: &DepGraph) -> CStore {
116113
CStore {
117114
dep_graph: dep_graph.clone(),
118115
metas: RefCell::new(FnvHashMap()),
119116
extern_mod_crate_map: RefCell::new(FnvHashMap()),
120117
used_crate_sources: RefCell::new(Vec::new()),
121118
used_libraries: RefCell::new(Vec::new()),
122119
used_link_args: RefCell::new(Vec::new()),
123-
intr: intr,
124120
statically_included_foreign_items: RefCell::new(NodeSet()),
125121
visible_parent_map: RefCell::new(FnvHashMap()),
126122
}

0 commit comments

Comments
 (0)