diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2021-06-28 21:33:47 +0200 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2021-07-18 11:14:08 +0200 |
| commit | 5b921505ef0892e4d83d0e2743e3e2eecd03d461 (patch) | |
| tree | e41e4e413bb8e83b427ede51b034257f1ea266be /compiler | |
| parent | 81241cbf3ae39db6188b7965b34e444f48e7ebbd (diff) | |
| download | rust-5b921505ef0892e4d83d0e2743e3e2eecd03d461.tar.gz rust-5b921505ef0892e4d83d0e2743e3e2eecd03d461.zip | |
Remove deadlock virtual call.
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_interface/src/util.rs | 4 | ||||
| -rw-r--r-- | compiler/rustc_middle/src/ty/context.rs | 2 | ||||
| -rw-r--r-- | compiler/rustc_middle/src/ty/query.rs | 3 | ||||
| -rw-r--r-- | compiler/rustc_query_impl/src/plumbing.rs | 11 |
4 files changed, 9 insertions, 11 deletions
diff --git a/compiler/rustc_interface/src/util.rs b/compiler/rustc_interface/src/util.rs index 4f51ce62042..8b41a0ff176 100644 --- a/compiler/rustc_interface/src/util.rs +++ b/compiler/rustc_interface/src/util.rs @@ -10,6 +10,8 @@ use rustc_errors::registry::Registry; use rustc_metadata::dynamic_lib::DynamicLibrary; #[cfg(parallel_compiler)] use rustc_middle::ty::tls; +#[cfg(parallel_compiler)] +use rustc_query_impl::QueryCtxt; use rustc_resolve::{self, Resolver}; use rustc_session as session; use rustc_session::config::{self, CrateType}; @@ -176,7 +178,7 @@ unsafe fn handle_deadlock() { thread::spawn(move || { tls::enter_context(icx, |_| { rustc_span::set_session_globals_then(session_globals, || { - tls::with(|tcx| tcx.queries.deadlock(tcx, ®istry)) + tls::with(|tcx| QueryCtxt::from_tcx(tcx).deadlock(®istry)) }) }); }); diff --git a/compiler/rustc_middle/src/ty/context.rs b/compiler/rustc_middle/src/ty/context.rs index 47cc328f6c8..b8405801106 100644 --- a/compiler/rustc_middle/src/ty/context.rs +++ b/compiler/rustc_middle/src/ty/context.rs @@ -71,7 +71,7 @@ use std::mem; use std::ops::{Bound, Deref}; use std::sync::Arc; -pub trait OnDiskCache<'tcx> { +pub trait OnDiskCache<'tcx>: rustc_data_structures::sync::Sync { /// Creates a new `OnDiskCache` instance from the serialized data in `data`. fn new(sess: &'tcx Session, data: Vec<u8>, start_pos: usize) -> Self where diff --git a/compiler/rustc_middle/src/ty/query.rs b/compiler/rustc_middle/src/ty/query.rs index 38ed82933fe..15a8888ee65 100644 --- a/compiler/rustc_middle/src/ty/query.rs +++ b/compiler/rustc_middle/src/ty/query.rs @@ -233,9 +233,6 @@ macro_rules! define_callbacks { pub trait QueryEngine<'tcx>: rustc_data_structures::sync::Sync { fn as_any(&'tcx self) -> &'tcx dyn std::any::Any; - #[cfg(parallel_compiler)] - unsafe fn deadlock(&'tcx self, tcx: TyCtxt<'tcx>, registry: &rustc_rayon_core::Registry); - fn try_mark_green(&'tcx self, tcx: TyCtxt<'tcx>, dep_node: &dep_graph::DepNode) -> bool; $($(#[$attr])* diff --git a/compiler/rustc_query_impl/src/plumbing.rs b/compiler/rustc_query_impl/src/plumbing.rs index 6ed82ebfdb3..58c1b57dbb9 100644 --- a/compiler/rustc_query_impl/src/plumbing.rs +++ b/compiler/rustc_query_impl/src/plumbing.rs @@ -155,6 +155,11 @@ impl<'tcx> QueryCtxt<'tcx> { self.queries.on_disk_cache.as_ref() } + #[cfg(parallel_compiler)] + pub unsafe fn deadlock(self, registry: &rustc_rayon_core::Registry) { + rustc_query_system::query::deadlock(self, registry) + } + pub(super) fn encode_query_results( self, encoder: &mut on_disk_cache::CacheEncoder<'a, 'tcx, opaque::FileEncoder>, @@ -537,12 +542,6 @@ macro_rules! define_queries_struct { this as _ } - #[cfg(parallel_compiler)] - unsafe fn deadlock(&'tcx self, tcx: TyCtxt<'tcx>, registry: &rustc_rayon_core::Registry) { - let tcx = QueryCtxt { tcx, queries: self }; - rustc_query_system::query::deadlock(tcx, registry) - } - fn try_mark_green(&'tcx self, tcx: TyCtxt<'tcx>, dep_node: &dep_graph::DepNode) -> bool { let qcx = QueryCtxt { tcx, queries: self }; tcx.dep_graph.try_mark_green(qcx, dep_node).is_some() |
