Skip to content

Commit 381d32e

Browse files
committed
Add fn_arg_names table.
1 parent 6cc96a4 commit 381d32e

File tree

4 files changed

+14
-29
lines changed

4 files changed

+14
-29
lines changed

compiler/rustc_metadata/src/rmeta/decoder.rs

-9
Original file line numberDiff line numberDiff line change
@@ -1395,15 +1395,6 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
13951395
tcx.arena.alloc_from_iter(self.root.lang_items_missing.decode(self))
13961396
}
13971397

1398-
fn get_fn_param_names(self, tcx: TyCtxt<'tcx>, id: DefIndex) -> &'tcx [Ident] {
1399-
let param_names = match self.kind(id) {
1400-
EntryKind::Fn(data) | EntryKind::ForeignFn(data) => data.decode(self).param_names,
1401-
EntryKind::AssocFn(data) => data.decode(self).fn_data.param_names,
1402-
_ => Lazy::empty(),
1403-
};
1404-
LazyQueryDecodable::decode_query(Some(param_names), self, tcx, || unreachable!())
1405-
}
1406-
14071398
fn exported_symbols(
14081399
self,
14091400
tcx: TyCtxt<'tcx>,

compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ provide! { <'tcx> tcx, def_id, other, cdata,
139139
mir_const_qualif => { table }
140140
rendered_const => { table }
141141
asyncness => { table }
142+
fn_arg_names => { table }
142143

143144
trait_def => { cdata.get_trait_def(def_id.index, tcx.sess) }
144145
adt_def => { cdata.get_adt_def(def_id.index, tcx) }
@@ -154,7 +155,6 @@ provide! { <'tcx> tcx, def_id, other, cdata,
154155
static_mutability => { cdata.static_mutability(def_id.index) }
155156
generator_kind => { cdata.generator_kind(def_id.index) }
156157
item_attrs => { tcx.arena.alloc_from_iter(cdata.get_item_attrs(def_id.index, tcx.sess)) }
157-
fn_arg_names => { cdata.get_fn_param_names(tcx, def_id.index) }
158158
trait_of_item => { cdata.get_trait_of_item(def_id.index) }
159159
is_mir_available => { cdata.is_item_mir_available(def_id.index) }
160160
is_ctfe_mir_available => { cdata.is_ctfe_mir_available(def_id.index) }

compiler/rustc_metadata/src/rmeta/encoder.rs

+12-18
Original file line numberDiff line numberDiff line change
@@ -1195,12 +1195,16 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
11951195
}
11961196
ty::AssocKind::Fn => {
11971197
let fn_data = if let hir::TraitItemKind::Fn(m_sig, m) = &ast_item.kind {
1198-
let param_names = match *m {
1199-
hir::TraitFn::Required(ref names) => self.encode_fn_param_names(names),
1200-
hir::TraitFn::Provided(body) => self.encode_fn_param_names_for_body(body),
1198+
match *m {
1199+
hir::TraitFn::Required(ref names) => {
1200+
record!(self.tables.fn_arg_names[def_id] <- *names)
1201+
}
1202+
hir::TraitFn::Provided(body) => {
1203+
record!(self.tables.fn_arg_names[def_id] <- self.tcx.hir().body_param_names(body))
1204+
}
12011205
};
12021206
record!(self.tables.asyncness[def_id] <- m_sig.header.asyncness);
1203-
FnData { constness: hir::Constness::NotConst, param_names }
1207+
FnData { constness: hir::Constness::NotConst }
12041208
} else {
12051209
bug!()
12061210
};
@@ -1262,14 +1266,14 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
12621266
ty::AssocKind::Fn => {
12631267
let fn_data = if let hir::ImplItemKind::Fn(ref sig, body) = ast_item.kind {
12641268
record!(self.tables.asyncness[def_id] <- sig.header.asyncness);
1269+
record!(self.tables.fn_arg_names[def_id] <- self.tcx.hir().body_param_names(body));
12651270
FnData {
12661271
// Can be inside `impl const Trait`, so using sig.header.constness is not reliable
12671272
constness: if self.tcx.is_const_fn_raw(def_id) {
12681273
hir::Constness::Const
12691274
} else {
12701275
hir::Constness::NotConst
12711276
},
1272-
param_names: self.encode_fn_param_names_for_body(body),
12731277
}
12741278
} else {
12751279
bug!()
@@ -1294,14 +1298,6 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
12941298
}
12951299
}
12961300

1297-
fn encode_fn_param_names_for_body(&mut self, body_id: hir::BodyId) -> Lazy<[Ident]> {
1298-
self.lazy(self.tcx.hir().body_param_names(body_id))
1299-
}
1300-
1301-
fn encode_fn_param_names(&mut self, param_names: &[Ident]) -> Lazy<[Ident]> {
1302-
self.lazy(param_names.iter())
1303-
}
1304-
13051301
fn encode_mir(&mut self) {
13061302
if self.is_proc_macro {
13071303
return;
@@ -1405,10 +1401,8 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
14051401
}
14061402
hir::ItemKind::Fn(ref sig, .., body) => {
14071403
record!(self.tables.asyncness[def_id] <- sig.header.asyncness);
1408-
let data = FnData {
1409-
constness: sig.header.constness,
1410-
param_names: self.encode_fn_param_names_for_body(body),
1411-
};
1404+
record!(self.tables.fn_arg_names[def_id] <- self.tcx.hir().body_param_names(body));
1405+
let data = FnData { constness: sig.header.constness };
14121406

14131407
EntryKind::Fn(self.lazy(data))
14141408
}
@@ -1874,13 +1868,13 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
18741868
match nitem.kind {
18751869
hir::ForeignItemKind::Fn(_, ref names, _) => {
18761870
record!(self.tables.asyncness[def_id] <- hir::IsAsync::NotAsync);
1871+
record!(self.tables.fn_arg_names[def_id] <- *names);
18771872
let data = FnData {
18781873
constness: if self.tcx.is_const_fn_raw(def_id) {
18791874
hir::Constness::Const
18801875
} else {
18811876
hir::Constness::NotConst
18821877
},
1883-
param_names: self.encode_fn_param_names(names),
18841878
};
18851879
record!(self.tables.kind[def_id] <- EntryKind::ForeignFn(self.lazy(data)));
18861880
}

compiler/rustc_metadata/src/rmeta/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ define_tables! {
311311
mir_const_qualif: Table<DefIndex, Lazy!(mir::ConstQualifs)>,
312312
rendered_const: Table<DefIndex, Lazy!(String)>,
313313
asyncness: Table<DefIndex, Lazy!(hir::IsAsync)>,
314+
fn_arg_names: Table<DefIndex, Lazy!([Ident])>,
314315

315316
trait_item_def_id: Table<DefIndex, Lazy<DefId>>,
316317
inherent_impls: Table<DefIndex, Lazy<[DefIndex]>>,
@@ -363,7 +364,6 @@ enum EntryKind {
363364
#[derive(MetadataEncodable, MetadataDecodable)]
364365
struct FnData {
365366
constness: hir::Constness,
366-
param_names: Lazy<[Ident]>,
367367
}
368368

369369
#[derive(TyEncodable, TyDecodable)]

0 commit comments

Comments
 (0)