summary refs log tree commit diff
path: root/compiler/rustc_query_system/src/query
AgeCommit message (Collapse)AuthorLines
2021-11-22Manually outline error on incremental_verify_ichMark Rousskov-24/+73
This reduces codegen for rustc_query_impl by 169k lines of LLVM IR, representing a 1.2% improvement.
2021-10-28Enable verification for 1/32th of queries loaded from diskMark Rousskov-1/+14
2021-10-23Do not require QueryCtxt for cache_on_disk.Camille GILLOT-1/+1
2021-10-23Build the query vtable directly.Camille GILLOT-58/+18
2021-10-21Do not depend on the stored value when trying to cache on disk.Camille GILLOT-5/+5
2021-10-20Address review.Camille GILLOT-1/+1
2021-10-20Compute query vtable manually.Camille GILLOT-27/+29
2021-10-20Build jump table at runtime.Camille GILLOT-55/+16
2021-10-20Invoke callbacks from rustc_middle.Camille GILLOT-7/+1
2021-10-20Merge two query callbacks arrays.Camille GILLOT-9/+9
2021-10-20Make hash_result an Option.Camille GILLOT-18/+10
2021-10-16Adopt let_else across the compilerest31-7/+3
This performs a substitution of code following the pattern: let <id> = if let <pat> = ... { identity } else { ... : ! }; To simplify it to: let <pat> = ... { identity } else { ... : ! }; By adopting the let_else feature.
2021-10-11Remove built-in cache_hit trackingMark Rousskov-22/+1
This was already only enabled in debug_assertions builds. Generally, it seems like most use cases that would use this could also use the -Zself-profile flag which also tracks cache hits (in all builds), and so the extra cfg's and such are not really necessary. This is largely just a small cleanup though, which primarily is intended to make other changes easier by avoiding the need to deal with this field.
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