Skip to content

Commit ca68104

Browse files
Simplify some extern providers
1 parent 5a9b6a2 commit ca68104

File tree

2 files changed

+21
-43
lines changed

2 files changed

+21
-43
lines changed

compiler/rustc_metadata/src/rmeta/decoder.rs

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,34 +1070,6 @@ impl<'a> CrateMetadataRef<'a> {
10701070
)
10711071
}
10721072

1073-
fn get_explicit_item_bounds<'tcx>(
1074-
self,
1075-
index: DefIndex,
1076-
tcx: TyCtxt<'tcx>,
1077-
) -> ty::EarlyBinder<'tcx, &'tcx [(ty::Clause<'tcx>, Span)]> {
1078-
let lazy = self.root.tables.explicit_item_bounds.get(self, index);
1079-
let output = if lazy.is_default() {
1080-
&mut []
1081-
} else {
1082-
tcx.arena.alloc_from_iter(lazy.decode((self, tcx)))
1083-
};
1084-
ty::EarlyBinder::bind(&*output)
1085-
}
1086-
1087-
fn get_explicit_item_super_predicates<'tcx>(
1088-
self,
1089-
index: DefIndex,
1090-
tcx: TyCtxt<'tcx>,
1091-
) -> ty::EarlyBinder<'tcx, &'tcx [(ty::Clause<'tcx>, Span)]> {
1092-
let lazy = self.root.tables.explicit_item_super_predicates.get(self, index);
1093-
let output = if lazy.is_default() {
1094-
&mut []
1095-
} else {
1096-
tcx.arena.alloc_from_iter(lazy.decode((self, tcx)))
1097-
};
1098-
ty::EarlyBinder::bind(&*output)
1099-
}
1100-
11011073
fn get_variant(
11021074
self,
11031075
kind: DefKind,
@@ -1323,10 +1295,6 @@ impl<'a> CrateMetadataRef<'a> {
13231295
self.root.tables.optimized_mir.get(self, id).is_some()
13241296
}
13251297

1326-
fn cross_crate_inlinable(self, id: DefIndex) -> bool {
1327-
self.root.tables.cross_crate_inlinable.get(self, id)
1328-
}
1329-
13301298
fn get_fn_has_self_parameter(self, id: DefIndex, sess: &'a Session) -> bool {
13311299
self.root
13321300
.tables

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

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,20 @@ trait ProcessQueryValue<'tcx, T> {
3232
fn process_decoded(self, _tcx: TyCtxt<'tcx>, _err: impl Fn() -> !) -> T;
3333
}
3434

35-
impl<T> ProcessQueryValue<'_, Option<T>> for Option<T> {
35+
impl<T> ProcessQueryValue<'_, T> for T {
3636
#[inline(always)]
37-
fn process_decoded(self, _tcx: TyCtxt<'_>, _err: impl Fn() -> !) -> Option<T> {
37+
fn process_decoded(self, _tcx: TyCtxt<'_>, _err: impl Fn() -> !) -> T {
3838
self
3939
}
4040
}
4141

42+
impl<'tcx, T> ProcessQueryValue<'tcx, ty::EarlyBinder<'tcx, T>> for T {
43+
#[inline(always)]
44+
fn process_decoded(self, _tcx: TyCtxt<'_>, _err: impl Fn() -> !) -> ty::EarlyBinder<'tcx, T> {
45+
ty::EarlyBinder::bind(self)
46+
}
47+
}
48+
4249
impl<T> ProcessQueryValue<'_, T> for Option<T> {
4350
#[inline(always)]
4451
fn process_decoded(self, _tcx: TyCtxt<'_>, err: impl Fn() -> !) -> T {
@@ -121,7 +128,12 @@ macro_rules! provide_one {
121128
provide_one! {
122129
$tcx, $def_id, $other, $cdata, $name => {
123130
let lazy = $cdata.root.tables.$name.get($cdata, $def_id.index);
124-
if lazy.is_default() { &[] } else { $tcx.arena.alloc_from_iter(lazy.decode(($cdata, $tcx))) }
131+
let value = if lazy.is_default() {
132+
&[] as &[_]
133+
} else {
134+
$tcx.arena.alloc_from_iter(lazy.decode(($cdata, $tcx)))
135+
};
136+
value.process_decoded($tcx, || panic!("{:?} does not have a {:?}", $def_id, stringify!($name)))
125137
}
126138
}
127139
};
@@ -230,15 +242,15 @@ impl IntoArgs for (CrateNum, SimplifiedType) {
230242
}
231243

232244
provide! { tcx, def_id, other, cdata,
233-
explicit_item_bounds => { cdata.get_explicit_item_bounds(def_id.index, tcx) }
234-
explicit_item_super_predicates => { cdata.get_explicit_item_super_predicates(def_id.index, tcx) }
245+
explicit_item_bounds => { table_defaulted_array }
246+
explicit_item_super_predicates => { table_defaulted_array }
235247
explicit_predicates_of => { table }
236248
generics_of => { table }
237249
inferred_outlives_of => { table_defaulted_array }
238250
explicit_super_predicates_of => { table }
239251
explicit_implied_predicates_of => { table }
240252
type_of => { table }
241-
type_alias_is_lazy => { cdata.root.tables.type_alias_is_lazy.get(cdata, def_id.index) }
253+
type_alias_is_lazy => { table_direct }
242254
variances_of => { table }
243255
fn_sig => { table }
244256
codegen_fn_attrs => { table }
@@ -259,7 +271,7 @@ provide! { tcx, def_id, other, cdata,
259271
lookup_default_body_stability => { table }
260272
lookup_deprecation_entry => { table }
261273
params_in_repr => { table }
262-
unused_generic_params => { cdata.root.tables.unused_generic_params.get(cdata, def_id.index) }
274+
unused_generic_params => { table_direct }
263275
def_kind => { cdata.def_kind(def_id.index) }
264276
impl_parent => { table }
265277
defaultness => { table_direct }
@@ -305,9 +317,7 @@ provide! { tcx, def_id, other, cdata,
305317
.process_decoded(tcx, || panic!("{def_id:?} does not have trait_impl_trait_tys")))
306318
}
307319

308-
associated_type_for_effects => {
309-
table
310-
}
320+
associated_type_for_effects => { table }
311321
associated_types_for_impl_traits_in_associated_fn => { table_defaulted_array }
312322

313323
visibility => { cdata.get_visibility(def_id.index) }
@@ -328,7 +338,7 @@ provide! { tcx, def_id, other, cdata,
328338
item_attrs => { tcx.arena.alloc_from_iter(cdata.get_item_attrs(def_id.index, tcx.sess)) }
329339
is_mir_available => { cdata.is_item_mir_available(def_id.index) }
330340
is_ctfe_mir_available => { cdata.is_ctfe_mir_available(def_id.index) }
331-
cross_crate_inlinable => { cdata.cross_crate_inlinable(def_id.index) }
341+
cross_crate_inlinable => { table_direct }
332342

333343
dylib_dependency_formats => { cdata.get_dylib_dependency_formats(tcx) }
334344
is_private_dep => { cdata.private_dep }

0 commit comments

Comments
 (0)