about summary refs log tree commit diff
path: root/compiler/rustc_query_system/src/query
AgeCommit message (Collapse)AuthorLines
2021-10-06Query the fingerprint style during key reconstructionMark Rousskov-2/+2
Keys can be reconstructed from fingerprints that are not DefPathHash, but then we cannot extract a DefId from them.
2021-10-03Access StableHashingContext in rustc_query_system.Camille GILLOT-6/+5
2021-09-11Auto merge of #78780 - cjgillot:req, r=Mark-Simulacrumbors-282/+189
Refactor query forcing The control flow in those functions was very complex, with several layers of continuations. I tried to simplify the implementation, while keeping essentially the same logic. Now, all code paths go through `try_execute_query` for the actual query execution. Communication with the `dep_graph` and the live caches are the only difference between query getting/ensuring/forcing.
2021-09-01Remove redundant `Span` in `QueryJobInfo`Noah Lev-11/+8
Previously, `QueryJobInfo` was composed of two parts: a `QueryInfo` and a `QueryJob`. However, both `QueryInfo` and `QueryJob` have a `span` field, which seem to be the same. So, the `span` was recorded twice. Now, `QueryJobInfo` is composed of a `QueryStackFrame` (the other field of `QueryInfo`) and a `QueryJob`. So, now, the `span` is only recorded once.
2021-08-27Note that trait aliases cannot be recursiveNoah Lev-9/+16
2021-08-27Note that type aliases cannot be recursiveNoah Lev-1/+42
2021-08-22Use variable.Camille GILLOT-12/+5
2021-08-22Unify `with_task` functions.Camille GILLOT-17/+7
Remove with_eval_always_task.
2021-08-22Remove force_query_with_job.Camille GILLOT-88/+53
2021-08-22Split try_execute_query.Camille GILLOT-16/+31
2021-08-22Decouple JobOwner from cache.Camille GILLOT-73/+66
2021-08-22Complete job outside of force_query_with_job.Camille GILLOT-14/+11
2021-08-22Do not compute the dep_node twice.Camille GILLOT-33/+21
2021-08-22Make all query forcing go through try_execute_query.Camille GILLOT-40/+31
try_execute_query is now able to centralize the path for query get/ensure/force. try_execute_query now takes the dep_node as a parameter, so it can accommodate `force`. This dep_node is an Option to avoid computing it in the `get` fast path. try_execute_query now returns both the result and the dep_node_index to allow the caller to handle the dep graph. The caller is responsible for marking the dependency.
2021-08-22Remove try_mark_green_and_read.Camille GILLOT-3/+6
2021-08-22Move assertion inwards.Camille GILLOT-14/+0
`with_taks_impl` is only called from `with_eval_always_task` and `with_task` . The former is only used in query invocation, while the latter is also used to start the `tcx` and to trigger codegen. This move should not change significantly the number of calls to this assertion.
2021-08-22Simplify control flow.Camille GILLOT-33/+28
2021-08-21Improve errors for recursive type aliasesNoah Lev-4/+8
2021-08-22Only clone key when needed.Camille GILLOT-4/+6
2021-08-22Move dep_graph checking into try_load_from_disk_and_cache_in_memory.Camille GILLOT-23/+12
2021-08-12Prevent double panic when handling incremental fingerprint mismatchAaron Hill-6/+27
When an incremental fingerprint mismatch occurs, we debug-print our `DepNode` and query result. Unfortunately, the debug printing process may cause us to run additional queries, which can result in a re-entrant fingerprint mismatch error. To avoid a double panic, this commit adds a thread-local variable to detect re-entrant calls.
2021-08-01Auto merge of #87449 - matthiaskrgr:clippyy_v2, r=nagisabors-2/+2
more clippy::complexity fixes (also a couple of clippy::perf fixes)
2021-07-25Restrict field visibilityAaron Hill-1/+1
2021-07-25Create `QuerySideEffects` and use it for diagnosticsAaron Hill-10/+39
2021-07-25clippy::useless_formatMatthias Krüger-2/+2
2021-05-30Reduce amount of function pointers.Camille GILLOT-35/+53
2021-05-29Move reconstruct test inwards.Camille GILLOT-5/+4
2021-05-15Remove def_path_str.Camille GILLOT-4/+0
2021-05-15Make the fast path faster.Camille GILLOT-13/+14
2021-05-15Move key recovering into force_query.Camille GILLOT-16/+37
2021-05-10Show nicer error when an 'unstable fingerprints' error occursAaron Hill-7/+13
2021-05-06Auto merge of #84806 - Mark-Simulacrum:try-start-entry, r=cjgillotbors-101/+111
Streamline try_start code This shifts some branches around and avoids interleaving parallel and non-parallel versions of the function too much.
2021-05-02Streamline try_start codeMark Rousskov-101/+111
This shifts some branches around and avoids interleaving parallel and non-parallel versions of the function too much.
2021-05-01Avoid generating QueryMap::extend for each key typeMark Rousskov-8/+5
2021-04-29Move iter_results to dyn FnMut rather than a genericMark Rousskov-21/+20
This means that we're no longer generating the iteration/locking code for each invocation site of iter_results, rather just once per query. This is a 15% win in instruction counts when compiling the rustc_query_impl crate.
2021-03-30Adjust profiling.Camille GILLOT-3/+5
2021-03-30Stream the dep-graph to a file.Camille GILLOT-7/+11
2021-03-26Use iter::zip in compiler/Josh Stone-2/+2
2021-03-19Debug-print result when an unstable fingerprint is detectedAaron Hill-1/+1
2021-03-13Auto merge of #83007 - Aaron1011:incr-verify-default, r=Mark-Simulacrumbors-11/+18
Turn `-Z incremental-verify-ich` on by default Issue #82920 showed that the kind of bugs caught by this flag have soundness implications.
2021-03-13Always run `incremental_verify_ich` when re-computing query resultsAaron Hill-11/+18
Issue #82920 showed that the kind of bugs caught by this flag have soundness implications. This causes performance regressions of up to 15.2% during incremental compilation, but this is necessary to catch miscompilations caused by bugs in query implementations.
2021-03-12rustc_query_system: simplify QueryCache::iterTyson Nottingham-22/+17
Minor cleanup to reduce a small amount of complexity and code bloat. Reduces the number of mono items in rustc_query_impl by 15%.
2021-02-21Simplify hashing.Camille GILLOT-33/+24
2021-02-20Move print_query_stack to rustc_query_system.Camille GILLOT-5/+43
2021-02-20Move report_cycle to rustc_query_system.Camille GILLOT-7/+47
The call to `ty::print::with_forced_impl_filename_line` is done when constructing the description, at the construction of the QueryStackFrame.
2021-02-20Move Query to rustc_query_system.Camille GILLOT-95/+124
Rename it to QueryStackFrame and document a bit.
2021-02-20Do not hold query key in Query.Camille GILLOT-4/+7
2021-02-20Access the session directly from DepContext.Camille GILLOT-10/+1
2021-02-19Use a QueryContext for try_mark_green.Camille GILLOT-12/+31
2021-02-19Move try_load_from_on_disk_cache to the QueryContext.Camille GILLOT-1/+4