Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 6 additions & 14 deletions compiler/rustc_middle/src/query/plumbing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ pub use sealed::IntoQueryParam;
use crate::dep_graph;
use crate::dep_graph::{DepKind, DepNodeIndex, SerializedDepNodeIndex};
use crate::ich::StableHashingContext;
use crate::queries::{ExternProviders, PerQueryVTables, Providers, QueryArenas, QueryEngine};
use crate::queries::{ExternProviders, PerQueryVTables, Providers, QueryArenas};
use crate::query::on_disk_cache::{CacheEncoder, EncodedDepNodeIndex, OnDiskCache};
use crate::query::stack::{QueryStackDeferred, QueryStackFrame, QueryStackFrameExtra};
use crate::query::{QueryCache, QueryInfo, QueryJob};
Expand Down Expand Up @@ -136,10 +136,11 @@ pub struct QueryVTable<'tcx, C: QueryCache> {
///
/// Used when reporting query cycle errors and similar problems.
pub description_fn: fn(TyCtxt<'tcx>, C::Key) -> String,

pub execute_query_fn: fn(TyCtxt<'tcx>, Span, C::Key, QueryMode) -> Option<C::Value>,
}

pub struct QuerySystemFns {
pub engine: QueryEngine,
pub local_providers: Providers,
pub extern_providers: ExternProviders,
pub encode_query_results: for<'tcx> fn(
Expand Down Expand Up @@ -449,7 +450,7 @@ macro_rules! define_callbacks {
query_ensure_select!(
[$($modifiers)*]
self.tcx,
self.tcx.query_system.fns.engine.$name,
self.tcx.query_system.query_vtables.$name.execute_query_fn,
&self.tcx.query_system.query_vtables.$name.query_cache,
$crate::query::IntoQueryParam::into_query_param(key),
false,
Expand All @@ -463,7 +464,7 @@ macro_rules! define_callbacks {
pub fn $name(self, key: query_helper_param_ty!($($K)*)) {
crate::query::inner::query_ensure(
self.tcx,
self.tcx.query_system.fns.engine.$name,
self.tcx.query_system.query_vtables.$name.execute_query_fn,
&self.tcx.query_system.query_vtables.$name.query_cache,
$crate::query::IntoQueryParam::into_query_param(key),
true,
Expand All @@ -490,7 +491,7 @@ macro_rules! define_callbacks {

erase::restore_val::<$V>(inner::query_get_at(
self.tcx,
self.tcx.query_system.fns.engine.$name,
self.tcx.query_system.query_vtables.$name.execute_query_fn,
&self.tcx.query_system.query_vtables.$name.query_cache,
self.span,
$crate::query::IntoQueryParam::into_query_param(key),
Expand Down Expand Up @@ -547,15 +548,6 @@ macro_rules! define_callbacks {
impl Clone for ExternProviders {
fn clone(&self) -> Self { *self }
}

pub struct QueryEngine {
$(pub $name: for<'tcx> fn(
TyCtxt<'tcx>,
Span,
$name::Key<'tcx>,
$crate::query::QueryMode,
) -> Option<$crate::query::erase::Erased<$V>>,)*
}
};
}

Expand Down
5 changes: 2 additions & 3 deletions compiler/rustc_query_impl/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use std::marker::ConstParamTy;

use rustc_data_structures::sync::AtomicU64;
use rustc_middle::dep_graph::{self, DepKind, DepNode, DepNodeIndex, SerializedDepNodeIndex};
use rustc_middle::queries::{self, ExternProviders, Providers, QueryEngine};
use rustc_middle::queries::{self, ExternProviders, Providers};
use rustc_middle::query::on_disk_cache::{CacheEncoder, EncodedDepNodeIndex, OnDiskCache};
use rustc_middle::query::plumbing::{
HashResult, QueryState, QuerySystem, QuerySystemFns, QueryVTable,
Expand Down Expand Up @@ -232,10 +232,9 @@ pub fn query_system<'tcx>(
) -> QuerySystem<'tcx> {
QuerySystem {
arenas: Default::default(),
query_vtables: make_query_vtables(),
query_vtables: make_query_vtables(incremental),
on_disk_cache,
fns: QuerySystemFns {
engine: engine(incremental),
local_providers,
extern_providers,
encode_query_results: encode_all_query_results,
Expand Down
23 changes: 8 additions & 15 deletions compiler/rustc_query_impl/src/plumbing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -568,7 +568,7 @@ macro_rules! define_queries {
}
}

pub(crate) fn make_query_vtable<'tcx>()
pub(crate) fn make_query_vtable<'tcx>(incremental: bool)
-> QueryVTable<'tcx, queries::$name::Storage<'tcx>>
{
QueryVTable {
Expand Down Expand Up @@ -620,6 +620,11 @@ macro_rules! define_queries {
hash_result: hash_result!([$($modifiers)*][queries::$name::Value<'tcx>]),
format_value: |value| format!("{:?}", erase::restore_val::<queries::$name::Value<'tcx>>(*value)),
description_fn: $crate::queries::_description_fns::$name,
execute_query_fn: if incremental {
query_impl::$name::get_query_incr::__rust_end_short_backtrace
} else {
query_impl::$name::get_query_non_incr::__rust_end_short_backtrace
},
}
}

Expand Down Expand Up @@ -731,22 +736,10 @@ macro_rules! define_queries {
}
})*}

pub(crate) fn engine(incremental: bool) -> QueryEngine {
if incremental {
QueryEngine {
$($name: query_impl::$name::get_query_incr::__rust_end_short_backtrace,)*
}
} else {
QueryEngine {
$($name: query_impl::$name::get_query_non_incr::__rust_end_short_backtrace,)*
}
}
}

pub fn make_query_vtables<'tcx>() -> queries::PerQueryVTables<'tcx> {
pub fn make_query_vtables<'tcx>(incremental: bool) -> queries::PerQueryVTables<'tcx> {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you want to take this opportunity to also rename PerQueryVTables back to QueryVTables, feel free. The more verbose name did its job at a more confusing time, but the simpler QueryVTables should be fine now.

queries::PerQueryVTables {
$(
$name: query_impl::$name::make_query_vtable(),
$name: query_impl::$name::make_query_vtable(incremental),
)*
}
}
Expand Down
Loading