mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 23:34:48 +00:00
Rollup merge of #118374 - klensy:collect_active_jobs, r=compiler-errors
QueryContext: rename try_collect_active_jobs -> collect_active_jobs, change return type from Option<QueryMap> to QueryMap As there currently always Some(...) inside.
This commit is contained in:
commit
7851d985fd
@ -126,11 +126,8 @@ pub(crate) fn run_in_thread_pool_with_globals<F: FnOnce() -> R + Send, R: Send>(
|
||||
.deadlock_handler(|| {
|
||||
// On deadlock, creates a new thread and forwards information in thread
|
||||
// locals to it. The new thread runs the deadlock handler.
|
||||
let query_map = FromDyn::from(tls::with(|tcx| {
|
||||
QueryCtxt::new(tcx)
|
||||
.try_collect_active_jobs()
|
||||
.expect("active jobs shouldn't be locked in deadlock handler")
|
||||
}));
|
||||
let query_map =
|
||||
FromDyn::from(tls::with(|tcx| QueryCtxt::new(tcx).collect_active_jobs()));
|
||||
let registry = rayon_core::Registry::current();
|
||||
thread::spawn(move || deadlock(query_map.into_inner(), ®istry));
|
||||
});
|
||||
|
@ -80,14 +80,14 @@ impl QueryContext for QueryCtxt<'_> {
|
||||
tls::with_related_context(self.tcx, |icx| icx.query)
|
||||
}
|
||||
|
||||
fn try_collect_active_jobs(self) -> Option<QueryMap> {
|
||||
fn collect_active_jobs(self) -> QueryMap {
|
||||
let mut jobs = QueryMap::default();
|
||||
|
||||
for collect in super::TRY_COLLECT_ACTIVE_JOBS.iter() {
|
||||
collect(self.tcx, &mut jobs);
|
||||
}
|
||||
|
||||
Some(jobs)
|
||||
jobs
|
||||
}
|
||||
|
||||
// Interactions with on_disk_cache
|
||||
@ -155,11 +155,11 @@ impl QueryContext for QueryCtxt<'_> {
|
||||
fn depth_limit_error(self, job: QueryJobId) {
|
||||
let mut span = None;
|
||||
let mut layout_of_depth = None;
|
||||
if let Some(map) = self.try_collect_active_jobs() {
|
||||
if let Some((info, depth)) = job.try_find_layout_root(map, dep_kinds::layout_of) {
|
||||
span = Some(info.job.span);
|
||||
layout_of_depth = Some(LayoutOfDepth { desc: info.query.description, depth });
|
||||
}
|
||||
if let Some((info, depth)) =
|
||||
job.try_find_layout_root(self.collect_active_jobs(), dep_kinds::layout_of)
|
||||
{
|
||||
span = Some(info.job.span);
|
||||
layout_of_depth = Some(LayoutOfDepth { desc: info.query.description, depth });
|
||||
}
|
||||
|
||||
let suggested_limit = match self.recursion_limit() {
|
||||
|
@ -620,13 +620,13 @@ pub fn print_query_stack<Qcx: QueryContext>(
|
||||
// state if it was responsible for triggering the panic.
|
||||
let mut count_printed = 0;
|
||||
let mut count_total = 0;
|
||||
let query_map = qcx.try_collect_active_jobs();
|
||||
let query_map = qcx.collect_active_jobs();
|
||||
|
||||
if let Some(ref mut file) = file {
|
||||
let _ = writeln!(file, "\n\nquery stack during panic:");
|
||||
}
|
||||
while let Some(query) = current_query {
|
||||
let Some(query_info) = query_map.as_ref().and_then(|map| map.get(&query)) else {
|
||||
let Some(query_info) = query_map.get(&query) else {
|
||||
break;
|
||||
};
|
||||
if Some(count_printed) < num_frames || num_frames.is_none() {
|
||||
|
@ -106,7 +106,7 @@ pub trait QueryContext: HasDepContext {
|
||||
/// Get the query information from the TLS context.
|
||||
fn current_query_job(self) -> Option<QueryJobId>;
|
||||
|
||||
fn try_collect_active_jobs(self) -> Option<QueryMap>;
|
||||
fn collect_active_jobs(self) -> QueryMap;
|
||||
|
||||
/// Load side effects associated to the node in the previous session.
|
||||
fn load_side_effects(self, prev_dep_node_index: SerializedDepNodeIndex) -> QuerySideEffects;
|
||||
|
@ -242,11 +242,8 @@ where
|
||||
Q: QueryConfig<Qcx>,
|
||||
Qcx: QueryContext,
|
||||
{
|
||||
let error = try_execute.find_cycle_in_stack(
|
||||
qcx.try_collect_active_jobs().unwrap(),
|
||||
&qcx.current_query_job(),
|
||||
span,
|
||||
);
|
||||
let error =
|
||||
try_execute.find_cycle_in_stack(qcx.collect_active_jobs(), &qcx.current_query_job(), span);
|
||||
(mk_cycle(query, qcx, error), None)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user