1use std::hash::Hash;
2use std::mem::ManuallyDrop;
3
4use rustc_data_structures::hash_table::{Entry, HashTable};
5use rustc_data_structures::stack::ensure_sufficient_stack;
6use rustc_data_structures::sync::{DynSend, DynSync};
7use rustc_data_structures::{defer, outline, sharded, sync};
8use rustc_errors::FatalError;
9use rustc_middle::dep_graph::{DepGraphData, DepNodeKey, SerializedDepNodeIndex};
10use rustc_middle::query::{
11 ActiveKeyStatus, Cycle, EnsureMode, QueryCache, QueryJob, QueryJobId, QueryKey, QueryLatch,
12 QueryMode, QueryState, QueryVTable,
13};
14use rustc_middle::ty::TyCtxt;
15use rustc_middle::verify_ich::incremental_verify_ich;
16use rustc_span::{DUMMY_SP, Span};
17use tracing::warn;
18
19use crate::dep_graph::{DepNode, DepNodeIndex};
20use crate::handle_cycle_error;
21use crate::job::{QueryJobInfo, QueryJobMap, create_cycle_error, find_cycle_in_stack};
22use crate::plumbing::{current_query_job, loadable_from_disk, next_job_id, start_query};
23use crate::query_impl::for_each_query_vtable;
24
25#[inline]
26fn equivalent_key<K: Eq, V>(k: K) -> impl Fn(&(K, V)) -> bool {
27 move |x| x.0 == k
28}
29
30pub(crate) fn all_inactive<'tcx, K>(state: &QueryState<'tcx, K>) -> bool {
31 state.active.lock_shards().all(|shard| shard.is_empty())
32}
33
34#[derive(#[automatically_derived]
impl ::core::clone::Clone for CollectActiveJobsKind {
#[inline]
fn clone(&self) -> CollectActiveJobsKind { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for CollectActiveJobsKind { }Copy)]
35pub enum CollectActiveJobsKind {
36 Full,
39
40 FullNoContention,
43
44 PartialAllowed,
47}
48
49pub fn collect_active_query_jobs<'tcx>(
51 tcx: TyCtxt<'tcx>,
52 collect_kind: CollectActiveJobsKind,
53) -> QueryJobMap<'tcx> {
54 let mut job_map = QueryJobMap::default();
55
56 {
let tcx: rustc_middle::ty::TyCtxt<'_> = tcx;
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.derive_macro_expansion;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.trigger_delayed_bug;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.registered_tools;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.early_lint_checks;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.env_var_os;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.resolutions;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.resolver_for_lowering_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.source_span;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.hir_crate;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.lower_delayed_owner;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.delayed_owner;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.hir_crate_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.hir_module_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.local_def_id_to_hir_id;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.hir_owner_parent_q;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.opt_hir_owner_nodes;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.hir_attr_map;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.opt_ast_lowering_delayed_lints;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.const_param_default;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.const_of_item;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_of_opaque;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_of_opaque_hir_typeck;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_alias_is_lazy;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.collect_return_position_impl_trait_in_trait_tys;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.opaque_ty_origin;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.unsizing_params_for_adt;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.analysis;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_expectations;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.generics_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.predicates_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.opaque_types_defined_by;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.nested_bodies_within;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.explicit_item_bounds;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.explicit_item_self_bounds;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.item_bounds;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.item_self_bounds;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.item_non_self_bounds;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.impl_super_outlives;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.native_libraries;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.shallow_lint_levels_on;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.lint_expectations;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.lints_that_dont_need_to_run;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.expn_that_defined;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_panic_runtime;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_representability;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_representability_adt_ty;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.params_in_repr;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.thir_body;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_keys;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_const_qualif;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_built;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.thir_abstract_const;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_drops_elaborated_and_const_checked;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_for_ctfe;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_promoted;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.closure_typeinfo;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.closure_saved_names_of_captured_variables;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_coroutine_witnesses;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_coroutine_obligations;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_potentially_region_dependent_goals;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.optimized_mir;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.coverage_attr_on;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.coverage_ids_info;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.promoted_mir;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.erase_and_anonymize_regions_ty;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.wasm_import_module_map;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.trait_explicit_predicates_and_bounds;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.explicit_predicates_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.inferred_outlives_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.explicit_super_predicates_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.explicit_implied_predicates_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.explicit_supertraits_containing_assoc_item;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.const_conditions;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.explicit_implied_const_bounds;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_param_predicates;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.trait_def;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.adt_def;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.adt_destructor;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.adt_async_destructor;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.adt_sizedness_constraint;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.adt_dtorck_constraint;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.constness;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.asyncness;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_promotable_const_fn;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.coroutine_by_move_body_def_id;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.coroutine_kind;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.coroutine_for_closure;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.coroutine_hidden_types;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_variances;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.variances_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.inferred_outlives_crate;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.associated_item_def_ids;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.associated_item;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.associated_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.impl_item_implementor_ids;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.associated_types_for_impl_traits_in_trait_or_impl;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.impl_trait_header;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.impl_self_is_guaranteed_unsized;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.inherent_impls;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.incoherent_impls;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_transmutes;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_unsafety;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_tail_calls;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.assumed_wf_types;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.assumed_wf_types_for_rpitit;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.fn_sig;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.lint_mod;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_unused_traits;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_mod_attrs;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_mod_unstable_api_usage;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_mod_privacy;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_liveness;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.live_symbols_and_ignored_derived_traits;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_mod_deathness;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_type_wf;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.coerce_unsized_info;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.typeck_root;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.used_trait_imports;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.coherent_trait;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_borrowck;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_inherent_impls;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_inherent_impls_validity_check;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_inherent_impls_overlap_check;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.orphan_check_impl;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_callgraph_cyclic;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_inliner_callees;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.tag_for_variant;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.eval_to_allocation_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.eval_static_initializer;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.eval_to_const_value_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.eval_to_valtree;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.valtree_to_const_val;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.lit_to_const;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_match;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.effective_visibilities;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_private_in_public;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.reachable_set;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.region_scope_tree;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.mir_shims;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.symbol_name;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.def_kind;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.def_span;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.def_ident_span;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.ty_span;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.lookup_stability;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.lookup_const_stability;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.lookup_default_body_stability;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.should_inherit_track_caller;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.inherited_align;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.lookup_deprecation_entry;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_doc_hidden;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_doc_notable_trait;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.attrs_for_def;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.codegen_fn_attrs;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.asm_target_features;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.fn_arg_idents;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.rendered_const;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.rendered_precise_capturing_args;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.impl_parent;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_mir_available;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.own_existential_vtable_entries;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.vtable_entries;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.first_method_vtable_slot;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.supertrait_vtable_slot;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.vtable_allocation;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.codegen_select_candidate;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.all_local_trait_impls;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.local_trait_impls;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.trait_impls_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.specialization_graph_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.dyn_compatibility_violations;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_dyn_compatible;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.param_env;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.typing_env_normalized_for_post_analysis;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_copy_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_use_cloned_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_sized_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_freeze_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_unsafe_unpin_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_unpin_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_async_drop_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.needs_drop_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.needs_async_drop_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.has_significant_drop_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.has_structural_eq_impl;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.adt_drop_tys;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.adt_async_drop_tys;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.adt_significant_drop_tys;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.list_significant_drop_tys;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.layout_of;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.fn_abi_of_fn_ptr;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.fn_abi_of_instance_no_deduced_attrs;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.fn_abi_of_instance_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.dylib_dependency_formats;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.dependency_formats;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_compiler_builtins;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.has_global_allocator;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.has_alloc_error_handler;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.has_panic_handler;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_profiler_runtime;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.has_ffi_unwind_calls;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.required_panic_strategy;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.panic_in_drop_strategy;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_no_builtins;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.symbol_mangling_version;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.extern_crate;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.specialization_enabled_in;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.specializes;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.in_scope_traits_map;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.defaultness;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.default_field;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_well_formed;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.enforce_impl_non_lifetime_params_are_constrained;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.reachable_non_generics;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_reachable_non_generic;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_unreachable_local_definition;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.upstream_monomorphizations;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.upstream_monomorphizations_for;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.upstream_drop_glue_for;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.upstream_async_drop_glue_for;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.foreign_modules;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.clashing_extern_declarations;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.entry_fn;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.proc_macro_decls_static;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_hash;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_host_hash;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.extra_filename;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_extern_paths;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.implementations_of_trait;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_incoherent_impls;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.native_library;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.inherit_sig_for_delegation_item;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.resolve_bound_vars;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.named_variable_map;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_late_bound_map;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.object_lifetime_default;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.late_bound_vars_map;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.opaque_captured_lifetimes;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.visibility;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.inhabited_predicate_adt;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.inhabited_predicate_type;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_dep_kind;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_name;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.module_children;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.num_extern_def_ids;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.lib_features;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.stability_implications;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.intrinsic_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.get_lang_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.all_diagnostic_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.defined_lang_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.diagnostic_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.missing_lang_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.visible_parent_map;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.trimmed_def_paths;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.missing_extern_crate_item;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.used_crate_source;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.debugger_visualizers;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.postorder_cnums;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_private_dep;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.allocator_kind;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.alloc_error_handler_kind;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.upvars_mentioned;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crates;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.used_crates;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.duplicate_crate_names;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.traits;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.trait_impls_in_crate;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.stable_order_of_exportable_impls;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.exportable_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.exported_non_generic_symbols;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.exported_generic_symbols;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.collect_and_partition_mono_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_codegened_item;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.codegen_unit;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.backend_optimization_level;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.output_filenames;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.normalize_canonicalized_projection;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.normalize_canonicalized_free_alias;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.normalize_canonicalized_inherent_projection;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.try_normalize_generic_arg_after_erasing_regions;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.implied_outlives_bounds;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.dropck_outlives;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.evaluate_obligation;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_op_ascribe_user_type;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_op_prove_predicate;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_op_normalize_ty;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_op_normalize_clause;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_op_normalize_poly_fn_sig;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.type_op_normalize_fn_sig;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.instantiate_and_check_impossible_predicates;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.is_impossible_associated_item;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.method_autoderef_steps;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.evaluate_root_goal_for_proof_tree_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.rust_target_features;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.implied_target_features;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.features_query;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.crate_for_resolver;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.resolve_instance_raw;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.reveal_opaque_types_in_bounds;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.limits;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.diagnostic_hir_wf_check;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.global_backend_features;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_validity_requirement;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.compare_impl_item;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.deduced_param_attrs;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.doc_link_resolutions;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.doc_link_traits_in_scope;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.stripped_cfg_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.generics_require_sized_self;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.cross_crate_inlinable;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_mono_item;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.skip_move_check_fns;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.items_of_instance;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.size_estimate;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.anon_const_kind;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.trivial_const;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.sanitizer_settings_for;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.check_externally_implementable_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
let query: &rustc_middle::query::QueryVTable<'_, _> =
&tcx.query_system.query_vtables.externally_implementable_items;
(|query|
{
collect_active_query_jobs_inner(query, collect_kind,
&mut job_map);
})(query);
};for_each_query_vtable!(ALL, tcx, |query| {
57 collect_active_query_jobs_inner(query, collect_kind, &mut job_map);
58 });
59
60 job_map
61}
62
63fn collect_active_query_jobs_inner<'tcx, C>(
67 query: &'tcx QueryVTable<'tcx, C>,
68 collect_kind: CollectActiveJobsKind,
69 job_map: &mut QueryJobMap<'tcx>,
70) where
71 C: QueryCache<Key: QueryKey + DynSend + DynSync>,
72 QueryVTable<'tcx, C>: DynSync,
73{
74 let mut collect_shard_jobs = |shard: &HashTable<(C::Key, ActiveKeyStatus<'tcx>)>| {
75 for (key, status) in shard.iter() {
76 if let ActiveKeyStatus::Started(job) = status {
77 let tagged_key = (query.create_tagged_key)(*key);
80 job_map.insert(job.id, QueryJobInfo { tagged_key, job: job.clone() });
81 }
82 }
83 };
84
85 match collect_kind {
86 CollectActiveJobsKind::Full => {
87 for shard in query.state.active.lock_shards() {
88 collect_shard_jobs(&shard);
89 }
90 }
91 CollectActiveJobsKind::FullNoContention => {
92 for shard in query.state.active.try_lock_shards() {
93 match shard {
94 Some(shard) => collect_shard_jobs(&shard),
95 None => {
::core::panicking::panic_fmt(format_args!("Failed to collect active jobs for query `{0}`!",
query.name));
}panic!("Failed to collect active jobs for query `{}`!", query.name),
96 }
97 }
98 }
99 CollectActiveJobsKind::PartialAllowed => {
100 for shard in query.state.active.try_lock_shards() {
101 match shard {
102 Some(shard) => collect_shard_jobs(&shard),
103 None => {
use ::tracing::__macro_support::Callsite as _;
static __CALLSITE: ::tracing::callsite::DefaultCallsite =
{
static META: ::tracing::Metadata<'static> =
{
::tracing_core::metadata::Metadata::new("event compiler/rustc_query_impl/src/execution.rs:103",
"rustc_query_impl::execution", ::tracing::Level::WARN,
::tracing_core::__macro_support::Option::Some("compiler/rustc_query_impl/src/execution.rs"),
::tracing_core::__macro_support::Option::Some(103u32),
::tracing_core::__macro_support::Option::Some("rustc_query_impl::execution"),
::tracing_core::field::FieldSet::new(&["message"],
::tracing_core::callsite::Identifier(&__CALLSITE)),
::tracing::metadata::Kind::EVENT)
};
::tracing::callsite::DefaultCallsite::new(&META)
};
let enabled =
::tracing::Level::WARN <= ::tracing::level_filters::STATIC_MAX_LEVEL
&&
::tracing::Level::WARN <=
::tracing::level_filters::LevelFilter::current() &&
{
let interest = __CALLSITE.interest();
!interest.is_never() &&
::tracing::__macro_support::__is_enabled(__CALLSITE.metadata(),
interest)
};
if enabled {
(|value_set: ::tracing::field::ValueSet|
{
let meta = __CALLSITE.metadata();
::tracing::Event::dispatch(meta, &value_set);
;
})({
#[allow(unused_imports)]
use ::tracing::field::{debug, display, Value};
let mut iter = __CALLSITE.metadata().fields().iter();
__CALLSITE.metadata().fields().value_set(&[(&::tracing::__macro_support::Iterator::next(&mut iter).expect("FieldSet corrupted (this is a bug)"),
::tracing::__macro_support::Option::Some(&format_args!("Failed to collect active jobs for query `{0}`!",
query.name) as &dyn Value))])
});
} else { ; }
}warn!("Failed to collect active jobs for query `{}`!", query.name),
104 }
105 }
106 }
107 }
108}
109
110#[cold]
111#[inline(never)]
112fn handle_cycle<'tcx, C: QueryCache>(
113 query: &'tcx QueryVTable<'tcx, C>,
114 tcx: TyCtxt<'tcx>,
115 key: C::Key,
116 cycle: Cycle<'tcx>,
117) -> C::Value {
118 let nested;
119 {
120 let mut nesting = tcx.query_system.cycle_handler_nesting.lock();
121 nested = match *nesting {
122 0 => false,
123 1 => true,
124 _ => {
125 tcx.dcx().delayed_bug("doubly nested cycle error").raise_fatal()
127 }
128 };
129 *nesting += 1;
130 }
131 let _guard = defer(|| *tcx.query_system.cycle_handler_nesting.lock() -= 1);
132
133 let error = create_cycle_error(tcx, &cycle, nested);
134
135 if nested {
136 handle_cycle_error::default(error)
138 } else {
139 (query.handle_cycle_error_fn)(tcx, key, cycle, error)
140 }
141}
142
143struct ActiveJobGuard<'tcx, K>
149where
150 K: Eq + Hash + Copy,
151{
152 state: &'tcx QueryState<'tcx, K>,
153 key: K,
154 key_hash: u64,
155}
156
157impl<'tcx, K> ActiveJobGuard<'tcx, K>
158where
159 K: Eq + Hash + Copy,
160{
161 fn complete<C>(self, cache: &C, value: C::Value, dep_node_index: DepNodeIndex)
164 where
165 C: QueryCache<Key = K>,
166 {
167 cache.complete(self.key, value, dep_node_index);
170
171 let mut this = ManuallyDrop::new(self);
172
173 this.drop_and_maybe_poison(false);
175 }
176
177 fn drop_and_maybe_poison(&mut self, poison: bool) {
178 let status = {
179 let mut shard = self.state.active.lock_shard_by_hash(self.key_hash);
180 match shard.find_entry(self.key_hash, equivalent_key(self.key)) {
181 Err(_) => {
182 drop(shard);
185 ::core::panicking::panic("explicit panic");panic!();
186 }
187 Ok(occupied) => {
188 let ((key, status), vacant) = occupied.remove();
189 if poison {
190 vacant.insert((key, ActiveKeyStatus::Poisoned));
191 }
192 status
193 }
194 }
195 };
196
197 match status {
199 ActiveKeyStatus::Started(job) => job.signal_complete(),
200 ActiveKeyStatus::Poisoned => ::core::panicking::panic("explicit panic")panic!(),
201 }
202 }
203}
204
205impl<'tcx, K> Drop for ActiveJobGuard<'tcx, K>
206where
207 K: Eq + Hash + Copy,
208{
209 #[inline(never)]
210 #[cold]
211 fn drop(&mut self) {
212 self.drop_and_maybe_poison(true);
214 }
215}
216
217#[cold]
218#[inline(never)]
219fn find_and_handle_cycle<'tcx, C: QueryCache>(
220 query: &'tcx QueryVTable<'tcx, C>,
221 tcx: TyCtxt<'tcx>,
222 key: C::Key,
223 try_execute: QueryJobId,
224 span: Span,
225) -> (C::Value, Option<DepNodeIndex>) {
226 let job_map = collect_active_query_jobs(tcx, CollectActiveJobsKind::FullNoContention);
229
230 let cycle = find_cycle_in_stack(try_execute, job_map, ¤t_query_job(), span);
231 (handle_cycle(query, tcx, key, cycle), None)
232}
233
234#[inline(always)]
235fn wait_for_query<'tcx, C: QueryCache>(
236 query: &'tcx QueryVTable<'tcx, C>,
237 tcx: TyCtxt<'tcx>,
238 span: Span,
239 key: C::Key,
240 key_hash: u64,
241 latch: QueryLatch<'tcx>,
242 current: Option<QueryJobId>,
243) -> (C::Value, Option<DepNodeIndex>) {
244 let query_blocked_prof_timer = tcx.prof.query_blocked();
248
249 let result = latch.wait_on(tcx, current, span);
251
252 match result {
253 Ok(()) => {
254 let Some((v, index)) = query.cache.lookup(&key) else {
255 outline(|| {
256 let shard = query.state.active.lock_shard_by_hash(key_hash);
259 match shard.find(key_hash, equivalent_key(key)) {
260 Some((_, ActiveKeyStatus::Poisoned)) => FatalError.raise(),
262 _ => {
::core::panicking::panic_fmt(format_args!("query \'{0}\' result must be in the cache or the query must be poisoned after a wait",
query.name));
}panic!(
263 "query '{}' result must be in the cache or the query must be poisoned after a wait",
264 query.name
265 ),
266 }
267 })
268 };
269
270 tcx.prof.query_cache_hit(index.into());
271 query_blocked_prof_timer.finish_with_query_invocation_id(index.into());
272
273 (v, Some(index))
274 }
275 Err(cycle) => (handle_cycle(query, tcx, key, cycle), None),
276 }
277}
278
279#[inline(never)]
281fn try_execute_query<'tcx, C: QueryCache, const INCR: bool>(
282 query: &'tcx QueryVTable<'tcx, C>,
283 tcx: TyCtxt<'tcx>,
284 span: Span,
285 key: C::Key,
286 dep_node: Option<DepNode>, ) -> (C::Value, Option<DepNodeIndex>) {
288 let key_hash = sharded::make_hash(&key);
289 let mut state_lock = query.state.active.lock_shard_by_hash(key_hash);
290
291 if tcx.sess.threads() > 1 {
298 if let Some((value, index)) = query.cache.lookup(&key) {
299 tcx.prof.query_cache_hit(index.into());
300 return (value, Some(index));
301 }
302 }
303
304 let current_job_id = current_query_job();
305
306 match state_lock.entry(key_hash, equivalent_key(key), |(k, _)| sharded::make_hash(k)) {
307 Entry::Vacant(entry) => {
308 let id = next_job_id(tcx);
311 let job = QueryJob::new(id, span, current_job_id);
312 entry.insert((key, ActiveKeyStatus::Started(job)));
313
314 drop(state_lock);
316
317 let job_guard = ActiveJobGuard { state: &query.state, key, key_hash };
320
321 let (value, dep_node_index) = if INCR {
323 execute_job_incr(query, tcx, key, dep_node.unwrap(), id)
324 } else {
325 execute_job_non_incr(query, tcx, key, id)
326 };
327
328 if query.feedable {
329 check_feedable_consistency(tcx, query, key, &value);
330 }
331
332 job_guard.complete(&query.cache, value, dep_node_index);
335
336 (value, Some(dep_node_index))
337 }
338 Entry::Occupied(mut entry) => {
339 match &mut entry.get_mut().1 {
340 ActiveKeyStatus::Started(job) => {
341 if sync::is_dyn_thread_safe() {
342 let latch = job.latch();
344 drop(state_lock);
345
346 wait_for_query(query, tcx, span, key, key_hash, latch, current_job_id)
349 } else {
350 let id = job.id;
351 drop(state_lock);
352
353 find_and_handle_cycle(query, tcx, key, id, span)
356 }
357 }
358 ActiveKeyStatus::Poisoned => FatalError.raise(),
359 }
360 }
361 }
362}
363
364#[inline(always)]
365fn check_feedable_consistency<'tcx, C: QueryCache>(
366 tcx: TyCtxt<'tcx>,
367 query: &'tcx QueryVTable<'tcx, C>,
368 key: C::Key,
369 value: &C::Value,
370) {
371 let Some((cached_value, _)) = query.cache.lookup(&key) else { return };
376
377 let Some(hash_value_fn) = query.hash_value_fn else {
378 {
::core::panicking::panic_fmt(format_args!("no_hash fed query later has its value computed.\nRemove `no_hash` modifier to allow recomputation.\nThe already cached value: {0}",
(query.format_value)(&cached_value)));
};panic!(
379 "no_hash fed query later has its value computed.\n\
380 Remove `no_hash` modifier to allow recomputation.\n\
381 The already cached value: {}",
382 (query.format_value)(&cached_value)
383 );
384 };
385
386 let (old_hash, new_hash) = tcx.with_stable_hashing_context(|mut hcx| {
387 (hash_value_fn(&mut hcx, &cached_value), hash_value_fn(&mut hcx, value))
388 });
389 let formatter = query.format_value;
390 if old_hash != new_hash {
391 if !tcx.dcx().has_errors().is_some() {
{
::core::panicking::panic_fmt(format_args!("Computed query value for {0:?}({1:?}) is inconsistent with fed value,\ncomputed={2:#?}\nfed={3:#?}",
query.dep_kind, key, formatter(value),
formatter(&cached_value)));
}
};assert!(
394 tcx.dcx().has_errors().is_some(),
395 "Computed query value for {:?}({:?}) is inconsistent with fed value,\n\
396 computed={:#?}\nfed={:#?}",
397 query.dep_kind,
398 key,
399 formatter(value),
400 formatter(&cached_value),
401 );
402 }
403}
404
405#[inline(always)]
407fn execute_job_non_incr<'tcx, C: QueryCache>(
408 query: &'tcx QueryVTable<'tcx, C>,
409 tcx: TyCtxt<'tcx>,
410 key: C::Key,
411 job_id: QueryJobId,
412) -> (C::Value, DepNodeIndex) {
413 if true {
if !!tcx.dep_graph.is_fully_enabled() {
::core::panicking::panic("assertion failed: !tcx.dep_graph.is_fully_enabled()")
};
};debug_assert!(!tcx.dep_graph.is_fully_enabled());
414
415 let prof_timer = tcx.prof.query_provider();
416 let value = start_query(job_id, query.depth_limit, || (query.invoke_provider_fn)(tcx, key));
418 let dep_node_index = tcx.dep_graph.next_virtual_depnode_index();
419 prof_timer.finish_with_query_invocation_id(dep_node_index.into());
420
421 if truecfg!(debug_assertions) {
423 let _ = key.to_fingerprint(tcx);
424 if let Some(hash_value_fn) = query.hash_value_fn {
425 tcx.with_stable_hashing_context(|mut hcx| {
426 hash_value_fn(&mut hcx, &value);
427 });
428 }
429 }
430
431 (value, dep_node_index)
432}
433
434#[inline(always)]
435fn execute_job_incr<'tcx, C: QueryCache>(
436 query: &'tcx QueryVTable<'tcx, C>,
437 tcx: TyCtxt<'tcx>,
438 key: C::Key,
439 dep_node: DepNode,
440 job_id: QueryJobId,
441) -> (C::Value, DepNodeIndex) {
442 let dep_graph_data =
443 tcx.dep_graph.data().expect("should always be present in incremental mode");
444
445 if !query.eval_always {
446 if let Some(ret) = start_query(job_id, false, || try {
449 let (prev_index, dep_node_index) = dep_graph_data.try_mark_green(tcx, &dep_node)?;
450 let value = load_from_disk_or_invoke_provider_green(
451 tcx,
452 dep_graph_data,
453 query,
454 key,
455 &dep_node,
456 prev_index,
457 dep_node_index,
458 );
459 (value, dep_node_index)
460 }) {
461 return ret;
462 }
463 }
464
465 let prof_timer = tcx.prof.query_provider();
466
467 let (result, dep_node_index) = start_query(job_id, query.depth_limit, || {
468 dep_graph_data.with_task(
470 dep_node,
471 tcx,
472 || (query.invoke_provider_fn)(tcx, key),
473 query.hash_value_fn,
474 )
475 });
476
477 prof_timer.finish_with_query_invocation_id(dep_node_index.into());
478
479 (result, dep_node_index)
480}
481
482#[inline(always)]
486fn load_from_disk_or_invoke_provider_green<'tcx, C: QueryCache>(
487 tcx: TyCtxt<'tcx>,
488 dep_graph_data: &DepGraphData,
489 query: &'tcx QueryVTable<'tcx, C>,
490 key: C::Key,
491 dep_node: &DepNode,
492 prev_index: SerializedDepNodeIndex,
493 dep_node_index: DepNodeIndex,
494) -> C::Value {
495 if true {
if !dep_graph_data.is_index_green(prev_index) {
::core::panicking::panic("assertion failed: dep_graph_data.is_index_green(prev_index)")
};
};debug_assert!(dep_graph_data.is_index_green(prev_index));
499
500 let try_value = if (query.will_cache_on_disk_for_key_fn)(key) {
502 let prof_timer = tcx.prof.incr_cache_loading();
503 let value = (query.try_load_from_disk_fn)(tcx, prev_index);
504 prof_timer.finish_with_query_invocation_id(dep_node_index.into());
505 value
506 } else {
507 None
508 };
509 let (value, verify) = match try_value {
510 Some(value) => {
511 if std::intrinsics::unlikely(tcx.sess.opts.unstable_opts.query_dep_graph) {
512 dep_graph_data.mark_debug_loaded_from_disk(*dep_node)
513 }
514
515 let prev_fingerprint = dep_graph_data.prev_value_fingerprint_of(prev_index);
516 let verify = prev_fingerprint.split().1.as_u64().is_multiple_of(32)
524 || tcx.sess.opts.unstable_opts.incremental_verify_ich;
525
526 (value, verify)
527 }
528 None => {
529 let prof_timer = tcx.prof.query_provider();
532 let value = tcx.dep_graph.with_ignore(|| (query.invoke_provider_fn)(tcx, key));
533 prof_timer.finish_with_query_invocation_id(dep_node_index.into());
534
535 (value, true)
536 }
537 };
538
539 if verify {
540 incremental_verify_ich(
550 tcx,
551 dep_graph_data,
552 &value,
553 prev_index,
554 query.hash_value_fn,
555 query.format_value,
556 );
557 }
558
559 value
560}
561
562#[inline(never)]
569fn ensure_can_skip_execution<'tcx, C: QueryCache>(
570 query: &'tcx QueryVTable<'tcx, C>,
571 tcx: TyCtxt<'tcx>,
572 key: C::Key,
573 dep_node: DepNode,
574 ensure_mode: EnsureMode,
575) -> bool {
576 if query.eval_always {
578 return false;
579 }
580
581 match tcx.dep_graph.try_mark_green(tcx, &dep_node) {
582 None => {
583 false
590 }
591 Some((serialized_dep_node_index, dep_node_index)) => {
592 tcx.dep_graph.read_index(dep_node_index);
593 tcx.prof.query_cache_hit(dep_node_index.into());
594 match ensure_mode {
595 EnsureMode::Ok => true,
600
601 EnsureMode::Done => {
606 (query.will_cache_on_disk_for_key_fn)(key)
607 && loadable_from_disk(tcx, serialized_dep_node_index)
608 }
609 }
610 }
611 }
612}
613
614#[inline(always)]
617pub(super) fn execute_query_non_incr_inner<'tcx, C: QueryCache>(
618 query: &'tcx QueryVTable<'tcx, C>,
619 tcx: TyCtxt<'tcx>,
620 span: Span,
621 key: C::Key,
622) -> C::Value {
623 ensure_sufficient_stack(|| try_execute_query::<C, false>(query, tcx, span, key, None).0)
624}
625
626#[inline(always)]
629pub(super) fn execute_query_incr_inner<'tcx, C: QueryCache>(
630 query: &'tcx QueryVTable<'tcx, C>,
631 tcx: TyCtxt<'tcx>,
632 span: Span,
633 key: C::Key,
634 mode: QueryMode,
635) -> Option<C::Value> {
636 let dep_node = DepNode::construct(tcx, query.dep_kind, &key);
637
638 if let QueryMode::Ensure { ensure_mode } = mode
640 && ensure_can_skip_execution(query, tcx, key, dep_node, ensure_mode)
641 {
642 return None;
643 }
644
645 let (result, dep_node_index) = ensure_sufficient_stack(|| {
646 try_execute_query::<C, true>(query, tcx, span, key, Some(dep_node))
647 });
648 if let Some(dep_node_index) = dep_node_index {
649 tcx.dep_graph.read_index(dep_node_index)
650 }
651 Some(result)
652}
653
654pub(crate) fn force_query_dep_node<'tcx, C: QueryCache>(
659 tcx: TyCtxt<'tcx>,
660 query: &'tcx QueryVTable<'tcx, C>,
661 dep_node: DepNode,
662) -> bool {
663 let Some(key) = C::Key::try_recover_key(tcx, &dep_node) else {
664 return false;
667 };
668
669 ensure_sufficient_stack(|| {
670 try_execute_query::<C, true>(query, tcx, DUMMY_SP, key, Some(dep_node))
671 });
672
673 true
676}