Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit f8fd973

Browse files
committed
Add mir_const_qualifs table.
1 parent 0b7ee3a commit f8fd973

File tree

4 files changed

+15
-28
lines changed

4 files changed

+15
-28
lines changed

compiler/rustc_metadata/src/rmeta/decoder.rs

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ use rustc_middle::arena::ArenaAllocatable;
2424
use rustc_middle::metadata::ModChild;
2525
use rustc_middle::middle::exported_symbols::{ExportedSymbol, SymbolExportLevel};
2626
use rustc_middle::middle::stability::DeprecationEntry;
27-
use rustc_middle::mir;
2827
use rustc_middle::mir::interpret::{AllocDecodingSession, AllocDecodingState};
2928
use rustc_middle::thir;
3029
use rustc_middle::ty::codec::TyDecoder;
@@ -1171,21 +1170,6 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
11711170
}
11721171
}
11731172

1174-
fn mir_const_qualif(self, id: DefIndex) -> mir::ConstQualifs {
1175-
match self.kind(id) {
1176-
EntryKind::AnonConst(qualif, _)
1177-
| EntryKind::Const(qualif, _)
1178-
| EntryKind::AssocConst(
1179-
AssocContainer::ImplDefault
1180-
| AssocContainer::ImplFinal
1181-
| AssocContainer::TraitWithDefault,
1182-
qualif,
1183-
_,
1184-
) => qualif,
1185-
_ => bug!("mir_const_qualif: unexpected kind"),
1186-
}
1187-
}
1188-
11891173
fn get_fn_has_self_parameter(self, id: DefIndex) -> bool {
11901174
match self.kind(id) {
11911175
EntryKind::AssocFn(data) => data.decode(self).has_self,
@@ -1209,7 +1193,7 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
12091193
let name = self.item_name(id);
12101194

12111195
let (kind, container, has_self) = match self.kind(id) {
1212-
EntryKind::AssocConst(container, _, _) => (ty::AssocKind::Const, container, false),
1196+
EntryKind::AssocConst(container, _) => (ty::AssocKind::Const, container, false),
12131197
EntryKind::AssocFn(data) => {
12141198
let data = data.decode(self);
12151199
(ty::AssocKind::Fn, data.container, data.has_self)
@@ -1429,9 +1413,9 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
14291413

14301414
fn get_rendered_const(self, id: DefIndex) -> String {
14311415
match self.kind(id) {
1432-
EntryKind::AnonConst(_, data)
1433-
| EntryKind::Const(_, data)
1434-
| EntryKind::AssocConst(_, _, data) => data.decode(self).0,
1416+
EntryKind::AnonConst(data)
1417+
| EntryKind::Const(data)
1418+
| EntryKind::AssocConst(_, data) => data.decode(self).0,
14351419
_ => bug!(),
14361420
}
14371421
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ provide! { <'tcx> tcx, def_id, other, cdata,
136136
impl_defaultness => { table }
137137
impl_constness => { table }
138138
coerce_unsized_info => { table }
139+
mir_const_qualif => { table }
139140

140141
trait_def => { cdata.get_trait_def(def_id.index, tcx.sess) }
141142
adt_def => { cdata.get_adt_def(def_id.index, tcx) }
@@ -145,7 +146,6 @@ provide! { <'tcx> tcx, def_id, other, cdata,
145146
}
146147
associated_item_def_ids => { cdata.get_associated_item_def_ids(tcx, def_id.index) }
147148
associated_item => { cdata.get_associated_item(def_id.index) }
148-
mir_const_qualif => { cdata.mir_const_qualif(def_id.index) }
149149
inherent_impls => { cdata.get_inherent_implementations_for_type(tcx, def_id.index) }
150150
is_const_fn_raw => { cdata.is_const_fn_raw(def_id.index) }
151151
asyncness => { cdata.asyncness(def_id.index) }

compiler/rustc_metadata/src/rmeta/encoder.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,9 +1192,9 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
11921192

11931193
record!(self.tables.kind[def_id] <- EntryKind::AssocConst(
11941194
container,
1195-
Default::default(),
11961195
rendered_const,
11971196
));
1197+
record!(self.tables.mir_const_qualif[def_id] <- mir::ConstQualifs::default());
11981198
}
11991199
ty::AssocKind::Fn => {
12001200
let fn_data = if let hir::TraitItemKind::Fn(m_sig, m) = &ast_item.kind {
@@ -1259,9 +1259,9 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
12591259

12601260
record!(self.tables.kind[def_id] <- EntryKind::AssocConst(
12611261
container,
1262-
qualifs,
12631262
self.encode_rendered_const_for_body(body_id))
12641263
);
1264+
record!(self.tables.mir_const_qualif[def_id] <- qualifs);
12651265
} else {
12661266
bug!()
12671267
}
@@ -1407,7 +1407,8 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
14071407
hir::ItemKind::Static(_, hir::Mutability::Not, _) => EntryKind::ImmStatic,
14081408
hir::ItemKind::Const(_, body_id) => {
14091409
let qualifs = self.tcx.at(item.span).mir_const_qualif(def_id);
1410-
EntryKind::Const(qualifs, self.encode_rendered_const_for_body(body_id))
1410+
record!(self.tables.mir_const_qualif[def_id] <- qualifs);
1411+
EntryKind::Const(self.encode_rendered_const_for_body(body_id))
14111412
}
14121413
hir::ItemKind::Fn(ref sig, .., body) => {
14131414
let data = FnData {
@@ -1603,7 +1604,8 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
16031604
let const_data = self.encode_rendered_const_for_body(body_id);
16041605
let qualifs = self.tcx.mir_const_qualif(def_id);
16051606

1606-
record!(self.tables.kind[def_id.to_def_id()] <- EntryKind::AnonConst(qualifs, const_data));
1607+
record!(self.tables.kind[def_id.to_def_id()] <- EntryKind::AnonConst(const_data));
1608+
record!(self.tables.mir_const_qualif[def_id.to_def_id()] <- qualifs);
16071609
self.encode_item_type(def_id.to_def_id());
16081610
}
16091611

compiler/rustc_metadata/src/rmeta/mod.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ define_tables! {
308308
impl_defaultness: Table<DefIndex, Lazy!(hir::Defaultness)>,
309309
// FIXME(eddyb) perhaps compute this on the fly if cheap enough?
310310
coerce_unsized_info: Table<DefIndex, Lazy!(ty::adjustment::CoerceUnsizedInfo)>,
311+
mir_const_qualif: Table<DefIndex, Lazy!(mir::ConstQualifs)>,
311312

312313
trait_item_def_id: Table<DefIndex, Lazy<DefId>>,
313314
inherent_impls: Table<DefIndex, Lazy<[DefIndex]>>,
@@ -324,8 +325,8 @@ define_tables! {
324325

325326
#[derive(Copy, Clone, MetadataEncodable, MetadataDecodable)]
326327
enum EntryKind {
327-
AnonConst(mir::ConstQualifs, Lazy<RenderedConst>),
328-
Const(mir::ConstQualifs, Lazy<RenderedConst>),
328+
AnonConst(Lazy<RenderedConst>),
329+
Const(Lazy<RenderedConst>),
329330
ImmStatic,
330331
MutStatic,
331332
ForeignImmStatic,
@@ -353,7 +354,7 @@ enum EntryKind {
353354
Impl,
354355
AssocFn(Lazy<AssocFnData>),
355356
AssocType(AssocContainer),
356-
AssocConst(AssocContainer, mir::ConstQualifs, Lazy<RenderedConst>),
357+
AssocConst(AssocContainer, Lazy<RenderedConst>),
357358
TraitAlias,
358359
}
359360

0 commit comments

Comments
 (0)