Skip to content

Commit ec7f800

Browse files
committed
Directly encode Constness in metadata.
1 parent 81bac88 commit ec7f800

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

compiler/rustc_metadata/src/rmeta/encoder.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,7 +1048,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
10481048
};
10491049

10501050
record!(self.tables.kind[def_id] <- EntryKind::Variant(self.lazy(data)));
1051-
record!(self.tables.impl_constness[def_id] <- hir::Constness::Const);
1051+
self.tables.impl_constness.set(def_id.index, hir::Constness::Const);
10521052
record!(self.tables.children[def_id] <- variant.fields.iter().map(|f| {
10531053
assert!(f.did.is_local());
10541054
f.did.index
@@ -1078,7 +1078,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
10781078
};
10791079

10801080
record!(self.tables.kind[def_id] <- EntryKind::Variant(self.lazy(data)));
1081-
record!(self.tables.impl_constness[def_id] <- hir::Constness::Const);
1081+
self.tables.impl_constness.set(def_id.index, hir::Constness::Const);
10821082
self.encode_item_type(def_id);
10831083
if variant.ctor_kind == CtorKind::Fn {
10841084
record!(self.tables.fn_sig[def_id] <- tcx.fn_sig(def_id));
@@ -1157,7 +1157,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
11571157
};
11581158

11591159
record!(self.tables.repr_options[def_id] <- adt_def.repr());
1160-
record!(self.tables.impl_constness[def_id] <- hir::Constness::Const);
1160+
self.tables.impl_constness.set(def_id.index, hir::Constness::Const);
11611161
record!(self.tables.kind[def_id] <- EntryKind::Struct(self.lazy(data)));
11621162
self.encode_item_type(def_id);
11631163
if variant.ctor_kind == CtorKind::Fn {
@@ -1208,7 +1208,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
12081208
}
12091209
};
12101210
record!(self.tables.asyncness[def_id] <- m_sig.header.asyncness);
1211-
record!(self.tables.impl_constness[def_id] <- hir::Constness::NotConst);
1211+
self.tables.impl_constness.set(def_id.index, hir::Constness::NotConst);
12121212
record!(self.tables.kind[def_id] <- EntryKind::AssocFn(self.lazy(AssocFnData {
12131213
container,
12141214
has_self: trait_item.fn_has_self_parameter,
@@ -1273,7 +1273,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
12731273
} else {
12741274
hir::Constness::NotConst
12751275
};
1276-
record!(self.tables.impl_constness[def_id] <- constness);
1276+
self.tables.impl_constness.set(def_id.index, constness);
12771277
record!(self.tables.kind[def_id] <- EntryKind::AssocFn(self.lazy(AssocFnData {
12781278
container,
12791279
has_self: impl_item.fn_has_self_parameter,
@@ -1396,7 +1396,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
13961396
hir::ItemKind::Fn(ref sig, .., body) => {
13971397
record!(self.tables.asyncness[def_id] <- sig.header.asyncness);
13981398
record!(self.tables.fn_arg_names[def_id] <- self.tcx.hir().body_param_names(body));
1399-
record!(self.tables.impl_constness[def_id] <- sig.header.constness);
1399+
self.tables.impl_constness.set(def_id.index, sig.header.constness);
14001400
EntryKind::Fn
14011401
}
14021402
hir::ItemKind::Macro(ref macro_def, _) => {
@@ -1420,7 +1420,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
14201420
hir::ItemKind::Struct(ref struct_def, _) => {
14211421
let adt_def = self.tcx.adt_def(def_id);
14221422
record!(self.tables.repr_options[def_id] <- adt_def.repr());
1423-
record!(self.tables.impl_constness[def_id] <- hir::Constness::Const);
1423+
self.tables.impl_constness.set(def_id.index, hir::Constness::Const);
14241424

14251425
// Encode def_ids for each field and method
14261426
// for methods, write all the stuff get_trait_method
@@ -1451,7 +1451,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
14511451
}
14521452
hir::ItemKind::Impl(hir::Impl { defaultness, constness, .. }) => {
14531453
record!(self.tables.impl_defaultness[def_id] <- defaultness);
1454-
record!(self.tables.impl_constness[def_id] <- constness);
1454+
self.tables.impl_constness.set(def_id.index, constness);
14551455

14561456
let trait_ref = self.tcx.impl_trait_ref(def_id);
14571457
if let Some(trait_ref) = trait_ref {
@@ -1893,7 +1893,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
18931893
} else {
18941894
hir::Constness::NotConst
18951895
};
1896-
record!(self.tables.impl_constness[def_id] <- constness);
1896+
self.tables.impl_constness.set(def_id.index, constness);
18971897
record!(self.tables.kind[def_id] <- EntryKind::ForeignFn);
18981898
}
18991899
hir::ForeignItemKind::Static(..) => {

compiler/rustc_metadata/src/rmeta/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ define_tables! {
311311
thir_abstract_const: Table<DefIndex, Lazy!(&'tcx [thir::abstract_const::Node<'tcx>])>,
312312
impl_parent: Table<DefIndex, Lazy!(DefId)>,
313313
impl_polarity: Table<DefIndex, ty::ImplPolarity>,
314-
impl_constness: Table<DefIndex, Lazy!(hir::Constness)>,
314+
impl_constness: Table<DefIndex, hir::Constness>,
315315
impl_defaultness: Table<DefIndex, Lazy!(hir::Defaultness)>,
316316
// FIXME(eddyb) perhaps compute this on the fly if cheap enough?
317317
coerce_unsized_info: Table<DefIndex, Lazy!(ty::adjustment::CoerceUnsizedInfo)>,

compiler/rustc_metadata/src/rmeta/table.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,13 @@ fixed_size_enum! {
113113
}
114114
}
115115

116+
fixed_size_enum! {
117+
hir::Constness {
118+
( NotConst )
119+
( Const )
120+
}
121+
}
122+
116123
// NOTE(eddyb) there could be an impl for `usize`, which would enable a more
117124
// generic `Lazy<T>` impl, but in the general case we might not need / want to
118125
// fit every `usize` in `u32`.

0 commit comments

Comments
 (0)