1
Fork 0

Update stability_index, all_crate_nums and features_query

This commit is contained in:
John Kåre Alsaker 2018-11-30 22:45:46 +01:00
parent 9dcc60b081
commit 10ef70bb68
4 changed files with 12 additions and 10 deletions

View file

@ -79,6 +79,8 @@ macro_rules! arena_types {
[few] resolve_lifetimes: rustc::middle::resolve_lifetime::ResolveLifetimes, [few] resolve_lifetimes: rustc::middle::resolve_lifetime::ResolveLifetimes,
[decode] generic_predicates: rustc::ty::GenericPredicates<'tcx>, [decode] generic_predicates: rustc::ty::GenericPredicates<'tcx>,
[few] lint_levels: rustc::lint::LintLevelMap, [few] lint_levels: rustc::lint::LintLevelMap,
[few] stability_index: rustc::middle::stability::Index<'tcx>,
[few] features: syntax::feature_gate::Features,
], $tcx); ], $tcx);
) )
} }

View file

@ -838,11 +838,11 @@ rustc_queries! {
eval_always eval_always
} }
query stability_index(_: CrateNum) -> Lrc<stability::Index<'tcx>> { query stability_index(_: CrateNum) -> &'tcx stability::Index<'tcx> {
eval_always eval_always
desc { "calculating the stability index for the local crate" } desc { "calculating the stability index for the local crate" }
} }
query all_crate_nums(_: CrateNum) -> Lrc<Vec<CrateNum>> { query all_crate_nums(_: CrateNum) -> &'tcx [CrateNum] {
eval_always eval_always
desc { "fetching all foreign CrateNum instances" } desc { "fetching all foreign CrateNum instances" }
} }
@ -1062,7 +1062,7 @@ rustc_queries! {
desc { |tcx| "estimating size for `{}`", tcx.def_path_str(def.def_id()) } desc { |tcx| "estimating size for `{}`", tcx.def_path_str(def.def_id()) }
} }
query features_query(_: CrateNum) -> Lrc<feature_gate::Features> { query features_query(_: CrateNum) -> &'tcx feature_gate::Features {
eval_always eval_always
desc { "looking up enabled feature gates" } desc { "looking up enabled feature gates" }
} }

View file

@ -1420,15 +1420,15 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
else { None } else { None }
} }
pub fn stability(self) -> Lrc<stability::Index<'tcx>> { pub fn stability(self) -> &'gcx stability::Index<'gcx> {
self.stability_index(LOCAL_CRATE) self.stability_index(LOCAL_CRATE)
} }
pub fn crates(self) -> Lrc<Vec<CrateNum>> { pub fn crates(self) -> &'gcx [CrateNum] {
self.all_crate_nums(LOCAL_CRATE) self.all_crate_nums(LOCAL_CRATE)
} }
pub fn features(self) -> Lrc<feature_gate::Features> { pub fn features(self) -> &'gcx feature_gate::Features {
self.features_query(LOCAL_CRATE) self.features_query(LOCAL_CRATE)
} }
@ -3083,7 +3083,7 @@ pub fn provide(providers: &mut ty::query::Providers<'_>) {
providers.stability_index = |tcx, cnum| { providers.stability_index = |tcx, cnum| {
assert_eq!(cnum, LOCAL_CRATE); assert_eq!(cnum, LOCAL_CRATE);
Lrc::new(stability::Index::new(tcx)) tcx.arena.alloc(stability::Index::new(tcx))
}; };
providers.lookup_stability = |tcx, id| { providers.lookup_stability = |tcx, id| {
assert_eq!(id.krate, LOCAL_CRATE); assert_eq!(id.krate, LOCAL_CRATE);
@ -3101,7 +3101,7 @@ pub fn provide(providers: &mut ty::query::Providers<'_>) {
}; };
providers.all_crate_nums = |tcx, cnum| { providers.all_crate_nums = |tcx, cnum| {
assert_eq!(cnum, LOCAL_CRATE); assert_eq!(cnum, LOCAL_CRATE);
Lrc::new(tcx.cstore.crates_untracked()) tcx.arena.alloc_slice(&tcx.cstore.crates_untracked())
}; };
providers.postorder_cnums = |tcx, cnum| { providers.postorder_cnums = |tcx, cnum| {
assert_eq!(cnum, LOCAL_CRATE); assert_eq!(cnum, LOCAL_CRATE);
@ -3113,7 +3113,7 @@ pub fn provide(providers: &mut ty::query::Providers<'_>) {
}; };
providers.features_query = |tcx, cnum| { providers.features_query = |tcx, cnum| {
assert_eq!(cnum, LOCAL_CRATE); assert_eq!(cnum, LOCAL_CRATE);
Lrc::new(tcx.sess.features_untracked().clone()) tcx.arena.alloc(tcx.sess.features_untracked().clone())
}; };
providers.is_panic_runtime = |tcx, cnum| { providers.is_panic_runtime = |tcx, cnum| {
assert_eq!(cnum, LOCAL_CRATE); assert_eq!(cnum, LOCAL_CRATE);

View file

@ -322,7 +322,7 @@ pub fn provide<'tcx>(providers: &mut Providers<'tcx>) {
// which is to say, its not deterministic in general. But // which is to say, its not deterministic in general. But
// we believe that libstd is consistently assigned crate // we believe that libstd is consistently assigned crate
// num 1, so it should be enough to resolve #46112. // num 1, so it should be enough to resolve #46112.
let mut crates: Vec<CrateNum> = (*tcx.crates()).clone(); let mut crates: Vec<CrateNum> = (*tcx.crates()).to_owned();
crates.sort(); crates.sort();
for &cnum in crates.iter() { for &cnum in crates.iter() {